Compare commits

...

10 Commits

Author SHA1 Message Date
Razvalyaev
040853e7dc Всякие тесты неинтересные 2026-09-24 07:58:47 +03:00
Razvalyaev
ad33d0de79 фикс прошивки под c3 2026-09-23 16:42:50 +03:00
Razvalyaev
1d62691973 фиксы по тестам разведенной платы 2026-09-16 10:06:50 +03:00
Razvalyaev
dda98860d1 добавлен субмодуль с зарядкой и мультисборка с ней 2026-08-26 12:59:57 +03:00
Razvalyaev
30264698b8 подправлен разъем для зарядника, но ещше не окончаительно 2026-08-25 18:31:21 +03:00
Razvalyaev
e1fcd0b7fe гербер для завода 2026-08-24 18:50:54 +03:00
Razvalyaev
a2de62f61d Возвращены отверстия для заказа платы, а не чпу
добавлен дюпонт разъем для самодельного аккума
2026-08-23 22:16:51 +03:00
Razvalyaev
bff0294a22 в pcb добавлен потенциометр для настройки мощности оптики 2026-08-23 21:34:40 +03:00
Razvalyaev
8699f8e4eb Сделана настройка мощности передающей оптики 2026-08-23 18:32:47 +03:00
Razvalyaev
3907cbcf77 Добавлено тестировние платы в меню:
- Тест Tx Оптики
- Тест Rx Оптики
- Тест АЦП
2026-08-22 20:03:12 +03:00
66 changed files with 13757 additions and 4867 deletions

1
.gitignore vendored
View File

@@ -2,6 +2,7 @@
__Previews/
History
Project Logs*/
Project Outputs*/
/.build/

4
.gitmodules vendored Normal file
View File

@@ -0,0 +1,4 @@
[submodule "PCB_Charger"]
path = PCB_Charger
url = https://git.rd12.ru/Razvalyaev/Charger.git
branch = master

View File

@@ -14,10 +14,12 @@
#include <string.h>
namespace {
constexpr uint8_t MENU_OPTICAL_CALIBRATION_ITEM = 7;
const char *uiFailName(FailReason reason);
const char *appStateName(AppState state) {
static const char *names[] = {"IDLE", "MENU", "SOLO_MEASURE", "SOLO_DRIVER", "MASTER_DISCOVER",
static const char *names[] = {"IDLE", "MENU", "BOARD_TEST", "PWM_OUTPUT", "SOLO_MEASURE", "SOLO_DRIVER", "MASTER_DISCOVER",
"MASTER_WAIT_READY", "MASTER_WAIT_RESULT", "MASTER_FINALIZE", "SLAVE_READY", "SLAVE_WAIT_START",
"SLAVE_MEASURE", "SLAVE_WAIT_ACK", "FINISHED"};
const uint8_t index = static_cast<uint8_t>(state);
@@ -145,6 +147,30 @@ const char *uiTestName(TestKind kind) {
? UiText::TEST_NAMES[index] : "?";
}
const char *uiTestGroupName(TestGroup group) {
const uint8_t index = static_cast<uint8_t>(group);
return index < sizeof(UiText::TEST_GROUP_NAMES) / sizeof(UiText::TEST_GROUP_NAMES[0])
? UiText::TEST_GROUP_NAMES[index] : "?";
}
const char *uiBoardTestName(BoardTest test) {
const uint8_t index = static_cast<uint8_t>(test);
return index < sizeof(UiText::BOARD_TEST_NAMES) / sizeof(UiText::BOARD_TEST_NAMES[0])
? UiText::BOARD_TEST_NAMES[index] : "?";
}
bool boardTestAvailable(BoardTest test) {
if (test == BoardTest::PWM_OUTPUT) return true;
if (test == BoardTest::ADC) return BOARD_RX_USES_ADC && BOARD_ADC_AVAILABLE;
if (test == BoardTest::RX_INPUT) return !BOARD_RX_USES_ADC;
return false;
}
BoardTest defaultBoardTest() {
return BOARD_RX_USES_ADC && BOARD_ADC_AVAILABLE
? BoardTest::ADC : BoardTest::RX_INPUT;
}
uint8_t lastValidMaxPulseIndex(uint32_t frequencyHz) {
uint8_t last = static_cast<uint8_t>(countOf(MAX_PULSE_OPTIONS_NS) - 1U);
while (last && static_cast<uint64_t>(MAX_PULSE_OPTIONS_NS[last]) * frequencyHz >= 1000000000ULL)
@@ -224,6 +250,16 @@ uint8_t cycleIndex(uint8_t value, uint8_t first, uint8_t last, int direction) {
return value <= first ? last : static_cast<uint8_t>(value - 1U);
}
uint8_t nextMenuItem(uint8_t current, TestGroup group, TestKind kind) {
if (group == TestGroup::BOARD)
return current == 0U ? MENU_OPTICAL_CALIBRATION_ITEM : 0U;
if (kind == TestKind::PWM_OUTPUT)
return current == 0U ? 1U : current == 1U ? 2U
: current == 2U ? MENU_OPTICAL_CALIBRATION_ITEM : 0U;
return current >= MENU_OPTICAL_CALIBRATION_ITEM ? 0U
: static_cast<uint8_t>(current + 1U);
}
bool parseUnsigned(const char *text, uint32_t &value) {
if (!text || !*text || *text == '-') return false;
char *end = nullptr;
@@ -290,7 +326,8 @@ void App::finishInitialization(bool factoryReset) {
lastUserActivityMs_ = millis();
setActivePerformance(false);
printConfiguration();
if (static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::OPTICS &&
static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
else showIdle();
}
@@ -313,7 +350,21 @@ void App::update() {
else if (now - bootCheckStartedMs_ >= FACTORY_RESET_HOLD_MS) finishInitialization(true);
return;
}
serviceRxPinStateLog();
if (state_ == AppState::BOARD_TEST) {
if (startEvent == ButtonEvent::LONG) stopBoardTest();
else {
if (modeEvent != ButtonEvent::NONE)
Log::event("ACTION", "MODE ignored while board test is active");
updateBoardTest(now);
}
return;
}
if (state_ == AppState::PWM_OUTPUT) {
if (startEvent == ButtonEvent::LONG) stopPwmOutput();
else if (modeEvent != ButtonEvent::NONE)
Log::event("ACTION", "MODE ignored while PWM output is active");
return;
}
if (state_ != AppState::IDLE && state_ != AppState::MENU && state_ != AppState::FINISHED &&
startEvent == ButtonEvent::LONG) { abortTest(); return; }
if (state_ != AppState::IDLE && state_ != AppState::MENU && state_ != AppState::FINISHED &&
@@ -323,12 +374,16 @@ void App::update() {
if (modeEvent == ButtonEvent::SHORT) {
cycleRunMode(); sanitizeRange(); const bool saved = store_.save(settings_);
params_ = store_.params(settings_);
if (static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::OPTICS &&
static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
else showIdle();
Log::printf("ACTION", "mode changed to %s/%s, NVS=%s",
roleName(static_cast<Role>(settings_.role)),
testKindName(static_cast<TestKind>(settings_.testKind)),
saved ? "OK" : "FAILED");
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD)
Log::printf("ACTION", "board test changed to %s, NVS=%s",
boardTestName(static_cast<BoardTest>(settings_.boardTest)), saved ? "OK" : "FAILED");
else
Log::printf("ACTION", "mode changed to %s/%s, NVS=%s",
roleName(static_cast<Role>(settings_.role)),
testKindName(static_cast<TestKind>(settings_.testKind)), saved ? "OK" : "FAILED");
} else if (modeEvent == ButtonEvent::LONG) {
state_ = AppState::MENU; menuItem_ = 0; Log::event("ACTION", "settings menu entered"); showMenu();
} else if (startEvent == ButtonEvent::SHORT) { Log::event("ACTION", "test start requested"); startTest(); }
@@ -351,16 +406,26 @@ void App::update() {
}
if (state_ == AppState::MENU) {
if (modeEvent == ButtonEvent::SHORT) {
menuItem_ = (menuItem_ + 1U) % 6U; Log::printf("ACTION", "menu item selected index=%u", menuItem_); showMenu();
leaveOpticalCalibration();
menuItem_ = nextMenuItem(menuItem_,
static_cast<TestGroup>(settings_.testGroup),
static_cast<TestKind>(settings_.testKind));
Log::printf("ACTION", "menu item selected index=%u", menuItem_);
showMenu();
}
else if (modeEvent == ButtonEvent::LONG) {
leaveOpticalCalibration();
sanitizeRange(); const bool saved = store_.save(settings_); params_ = store_.params(settings_);
Log::printf("ACTION", "settings menu saved and closed, NVS=%s", saved ? "OK" : "FAILED");
state_ = AppState::IDLE; printConfiguration();
if (static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::OPTICS &&
static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
else showIdle();
} else if (startEvent == ButtonEvent::SHORT) changeMenu(+1);
else if (startEvent == ButtonEvent::LONG || startEvent == ButtonEvent::REPEAT) changeMenu(-1);
} else if (menuItem_ != MENU_OPTICAL_CALIBRATION_ITEM &&
startEvent == ButtonEvent::SHORT) changeMenu(+1);
else if (menuItem_ != MENU_OPTICAL_CALIBRATION_ITEM &&
(startEvent == ButtonEvent::LONG || startEvent == ButtonEvent::REPEAT)) changeMenu(-1);
updateOpticalCalibration(now);
return;
}
if (state_ == AppState::SOLO_MEASURE) {
@@ -429,10 +494,17 @@ void App::showIdle() {
setActivePerformance(false);
setStandbyOpticalOutput();
lastUserActivityMs_ = millis();
char one[64]; snprintf(one, sizeof(one), "%s: %s",
uiRoleName(static_cast<Role>(settings_.role)),
uiTestName(static_cast<TestKind>(settings_.testKind)));
display_.show(one, UiText::START_RUN);
char one[64];
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD) {
snprintf(one, sizeof(one), "%s: %s", uiTestGroupName(TestGroup::BOARD),
uiBoardTestName(static_cast<BoardTest>(settings_.boardTest)));
display_.show(one, UiText::BOARD_READY);
} else {
snprintf(one, sizeof(one), "%s: %s",
uiRoleName(static_cast<Role>(settings_.role)),
uiTestName(static_cast<TestKind>(settings_.testKind)));
display_.show(one, UiText::START_RUN);
}
}
void App::serviceSerialConsole() {
@@ -464,13 +536,15 @@ void App::serviceSerialConsole() {
void App::printSerialHelp() {
Serial.println("COMMANDS (send with newline):");
Serial.println(" help | status | start | stop | defaults");
Serial.println(" set group optics|board");
Serial.println(" set boardtest adc|pwm|rx");
Serial.println(" set role solo|master|slave");
Serial.println(" set test optical|driver");
Serial.println(" set frequency 500|1000|2000|5000|10000|25000");
Serial.println(" set max 2000|5000|10000|20000|50000|100000|200000|500000");
Serial.println(" set test optical|driver|pwm (driver/pwm: SOLO only)");
Serial.println(" set frequency 500|1000|2000|5000|10000");
Serial.println(" set max 2000|5000|10000|50000|100000|500000 (PWM pulse in SOLO PWM)");
Serial.println(" set min 250|500|1000|2000|5000|10000|50000");
Serial.println(" set accuracy 1|2|5|10");
Serial.println(" set time 100|250|500|1000|2000|5000 (ms)");
Serial.println(" set time 100|250|500|1000|2000|5000|60000 (ms)");
Serial.println(" set light HH|HL|LH|LL (DRIVER only)");
}
@@ -480,8 +554,9 @@ void App::printSerialStatus() {
return;
}
params_ = store_.params(settings_);
Serial.printf("STATUS state=%s role=%s test=%s frequency=%luHz max=%luns min=%luns accuracy=%.2f%% time=%lums light=%s usb=%s\n",
appStateName(state_), roleName(static_cast<Role>(settings_.role)),
Serial.printf("STATUS state=%s group=%s boardtest=%s role=%s test=%s frequency=%luHz max=%luns min=%luns accuracy=%.2f%% time=%lums light=%s usb=%s\n",
appStateName(state_), testGroupName(static_cast<TestGroup>(settings_.testGroup)),
boardTestName(static_cast<BoardTest>(settings_.boardTest)), roleName(static_cast<Role>(settings_.role)),
testKindName(static_cast<TestKind>(settings_.testKind)), params_.frequencyHz,
params_.maxPulseNs, params_.minPulseNs, params_.accuracyPct, params_.testTimeMs,
configuredLevelName(settings_),
@@ -495,13 +570,15 @@ bool App::serialSettingsMutable() const {
void App::finishSerialSettingsChange() {
if (state_ == AppState::SLAVE_READY) radio_.end();
leaveOpticalCalibration();
state_ = AppState::IDLE;
sanitizeRange();
params_ = store_.params(settings_);
pwm_.configureActiveLight(configuredTxPulseLightOn(settings_));
const bool saved = store_.save(settings_);
Serial.printf("OK settings saved=%s\n", saved ? "yes" : "no");
if (static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::OPTICS &&
static_cast<Role>(settings_.role) == Role::SLAVE) armSlave();
else showIdle();
printSerialStatus();
}
@@ -535,7 +612,14 @@ void App::handleSerialCommand(char *line) {
if ((!strcmp(command, "stop") || !strcmp(command, "abort")) && !name) {
if (!initialized_) Serial.println("ERR still initializing");
else if (state_ == AppState::IDLE || state_ == AppState::FINISHED) Serial.println("OK already stopped");
else if (state_ == AppState::MENU) {
else if (state_ == AppState::BOARD_TEST) {
Serial.println("OK board test stopped");
stopBoardTest();
} else if (state_ == AppState::PWM_OUTPUT) {
Serial.println("OK PWM output stopped");
stopPwmOutput();
} else if (state_ == AppState::MENU) {
leaveOpticalCalibration();
state_ = AppState::IDLE; showIdle(); Serial.println("OK menu closed");
} else if (state_ == AppState::SLAVE_READY) Serial.println("OK slave is armed; no test is running");
else {
@@ -564,7 +648,22 @@ void App::handleSerialCommand(char *line) {
bool accepted = false;
uint32_t numeric = 0;
if (!strcmp(name, "role")) {
if (!strcmp(name, "group")) {
if (!strcmp(value, "optics") || !strcmp(value, "optical")) {
settings_.testGroup = static_cast<uint8_t>(TestGroup::OPTICS); accepted = true;
} else if (!strcmp(value, "board")) {
settings_.testGroup = static_cast<uint8_t>(TestGroup::BOARD); accepted = true;
}
} else if (!strcmp(name, "boardtest") || !strcmp(name, "board")) {
BoardTest selected = static_cast<BoardTest>(UINT8_MAX);
if (!strcmp(value, "adc")) selected = BoardTest::ADC;
else if (!strcmp(value, "pwm")) selected = BoardTest::PWM_OUTPUT;
else if (!strcmp(value, "rx")) selected = BoardTest::RX_INPUT;
if (boardTestAvailable(selected)) {
settings_.boardTest = static_cast<uint8_t>(selected);
accepted = true;
}
} else if (!strcmp(name, "role")) {
if (!strcmp(value, "solo")) { settings_.role = static_cast<uint8_t>(Role::SOLO); accepted = true; }
else if (!strcmp(value, "master")) { settings_.role = static_cast<uint8_t>(Role::MASTER); accepted = true; }
else if (!strcmp(value, "slave")) { settings_.role = static_cast<uint8_t>(Role::SLAVE); accepted = true; }
@@ -573,6 +672,9 @@ void App::handleSerialCommand(char *line) {
else if (!strcmp(value, "driver") && !TARGET_IS_C3 &&
static_cast<Role>(settings_.role) == Role::SOLO) {
settings_.testKind = static_cast<uint8_t>(TestKind::DRIVER); accepted = true;
} else if (!strcmp(value, "pwm") &&
static_cast<Role>(settings_.role) == Role::SOLO) {
settings_.testKind = static_cast<uint8_t>(TestKind::PWM_OUTPUT); accepted = true;
}
} else if ((!strcmp(name, "frequency") || !strcmp(name, "freq")) && parseUnsigned(value, numeric)) {
const int index = optionIndex(PWM_FREQUENCY_OPTIONS_HZ, numeric);
@@ -608,10 +710,19 @@ void App::handleSerialCommand(char *line) {
}
void App::cycleRunMode() {
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD) {
do {
settings_.boardTest = (settings_.boardTest + 1U) %
(static_cast<uint8_t>(BoardTest::RX_INPUT) + 1U);
} while (!boardTestAvailable(static_cast<BoardTest>(settings_.boardTest)));
return;
}
const Role role = static_cast<Role>(settings_.role);
const TestKind kind = static_cast<TestKind>(settings_.testKind);
if (role == Role::SOLO && kind == TestKind::OPTICAL && !TARGET_IS_C3) {
settings_.testKind = static_cast<uint8_t>(TestKind::DRIVER);
} else if (role == Role::SOLO && kind != TestKind::PWM_OUTPUT) {
settings_.testKind = static_cast<uint8_t>(TestKind::PWM_OUTPUT);
} else if (role == Role::SOLO) {
settings_.role = static_cast<uint8_t>(Role::MASTER);
settings_.testKind = static_cast<uint8_t>(TestKind::OPTICAL);
@@ -625,13 +736,19 @@ void App::cycleRunMode() {
}
void App::sanitizeRange() {
if (settings_.testGroup > static_cast<uint8_t>(TestGroup::BOARD))
settings_.testGroup = static_cast<uint8_t>(TestGroup::OPTICS);
if (settings_.boardTest > static_cast<uint8_t>(BoardTest::RX_INPUT) ||
!boardTestAvailable(static_cast<BoardTest>(settings_.boardTest)))
settings_.boardTest = static_cast<uint8_t>(defaultBoardTest());
if (settings_.role > static_cast<uint8_t>(Role::SLAVE))
settings_.role = static_cast<uint8_t>(Role::SOLO);
if (settings_.testKind > static_cast<uint8_t>(TestKind::DRIVER))
if (settings_.testKind > static_cast<uint8_t>(TestKind::PWM_OUTPUT))
settings_.testKind = static_cast<uint8_t>(TestKind::OPTICAL);
if (settings_.lightCode > static_cast<uint8_t>(LightCode::LL))
settings_.lightCode = static_cast<uint8_t>(LightCode::HH);
if (settings_.role != static_cast<uint8_t>(Role::SOLO) ||
if ((settings_.role != static_cast<uint8_t>(Role::SOLO) &&
settings_.testKind != static_cast<uint8_t>(TestKind::OPTICAL)) ||
(TARGET_IS_C3 && settings_.testKind == static_cast<uint8_t>(TestKind::DRIVER)))
settings_.testKind = static_cast<uint8_t>(TestKind::OPTICAL);
settings_.frequencyIndex %= countOf(PWM_FREQUENCY_OPTIONS_HZ);
@@ -654,29 +771,19 @@ void App::sanitizeRange() {
}
}
void App::serviceRxPinStateLog() {
#ifdef RX_PIN_CHANGE_TEST
const bool level = digitalRead(GPIO_RX) == HIGH;
const bool outsideTest = state_ == AppState::IDLE || state_ == AppState::MENU ||
state_ == AppState::SLAVE_READY || state_ == AppState::FINISHED;
if (rxPinStateKnown_ && level != rxPinState_ && outsideTest)
Log::printf("RX TEST", "GPIO=%u state=%s (%u)", GPIO_RX,
level ? "HIGH" : "LOW", level ? 1U : 0U);
rxPinState_ = level;
rxPinStateKnown_ = true;
#endif
}
void App::changeMenu(int d) {
sanitizeRange();
if (menuItem_ == 1) {
if (menuItem_ == 0) {
settings_.testGroup = cycleIndex(settings_.testGroup, 0,
static_cast<uint8_t>(TestGroup::BOARD), d);
} else if (menuItem_ == 2) {
const uint8_t last = lastValidMaxPulseIndex(
PWM_FREQUENCY_OPTIONS_HZ[settings_.frequencyIndex]);
const uint8_t first = firstMaxPulseIndexAtLeast(
MIN_PULSE_OPTIONS_NS[settings_.minPulseIndex], last);
const uint8_t first = static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT
? 0U : firstMaxPulseIndexAtLeast(MIN_PULSE_OPTIONS_NS[settings_.minPulseIndex], last);
settings_.maxPulseIndex = cycleIndex(settings_.maxPulseIndex,
first, last, d);
} else if (menuItem_ == 2) {
} else if (menuItem_ == 3) {
const uint8_t last = lastMinPulseIndexAtMost(
MAX_PULSE_OPTIONS_NS[settings_.maxPulseIndex]);
const uint8_t first = static_cast<TestKind>(settings_.testKind) == TestKind::DRIVER
@@ -685,10 +792,10 @@ void App::changeMenu(int d) {
} else {
uint8_t *value = nullptr; size_t count = 0;
switch (menuItem_) {
case 0: value = &settings_.frequencyIndex; count = countOf(PWM_FREQUENCY_OPTIONS_HZ); break;
case 3: value = &settings_.accuracyIndex; count = countOf(ACCURACY_OPTIONS_PCT); break;
case 4: value = &settings_.timeIndex; count = countOf(TEST_TIME_OPTIONS_MS); break;
case 5:
case 1: value = &settings_.frequencyIndex; count = countOf(PWM_FREQUENCY_OPTIONS_HZ); break;
case 4: value = &settings_.accuracyIndex; count = countOf(ACCURACY_OPTIONS_PCT); break;
case 5: value = &settings_.timeIndex; count = countOf(TEST_TIME_OPTIONS_MS); break;
case 6:
if (static_cast<TestKind>(settings_.testKind) != TestKind::DRIVER) {
showMenu();
return;
@@ -713,26 +820,32 @@ void App::showMenu() {
Display::formatDuration(actualNominalTotalUs(), all, sizeof(all));
switch (menuItem_) {
case 0:
snprintf(value, sizeof(value), "%s",
uiTestGroupName(static_cast<TestGroup>(settings_.testGroup)));
label = UiText::MENU_TEST_GROUP;
break;
case 1:
Display::formatPwmFrequency(params_.frequencyHz, value, sizeof(value));
label = UiText::MENU_FREQUENCY;
break;
case 1:
Display::formatPulse(params_.maxPulseNs, value, sizeof(value));
label = UiText::MENU_MAX_PULSE;
break;
case 2:
Display::formatPulse(params_.maxPulseNs, value, sizeof(value));
label = static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT
? UiText::MENU_PWM_PULSE : UiText::MENU_MAX_PULSE;
break;
case 3:
Display::formatPulse(params_.minPulseNs, value, sizeof(value));
label = UiText::MENU_MIN_PULSE;
break;
case 3:
case 4:
snprintf(value, sizeof(value), "+/-%g%%", params_.accuracyPct);
label = UiText::MENU_ACCURACY;
break;
case 4:
case 5:
snprintf(value, sizeof(value), "%.1fs", params_.testTimeMs / 1000.0f);
label = UiText::MENU_TEST_TIME;
break;
case 5: {
case 6: {
if (static_cast<TestKind>(settings_.testKind) != TestKind::DRIVER) {
snprintf(value, sizeof(value), "%s", UiText::LIGHT_AUTO);
label = UiText::MENU_LIGHT_CODE;
@@ -748,18 +861,70 @@ void App::showMenu() {
display_.show(one, total);
return;
}
case MENU_OPTICAL_CALIBRATION_ITEM:
enterOpticalCalibration(millis());
return;
default: return;
}
formatMenuLine(label, value, one, sizeof(one));
formatMenuLine(UiText::MENU_TOTAL_TIME, all, total, sizeof(total));
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD ||
static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT)
snprintf(total, sizeof(total), "%s", UiText::BOARD_READY);
else
formatMenuLine(UiText::MENU_TOTAL_TIME, all, total, sizeof(total));
display_.show(one, total);
}
void App::enterOpticalCalibration(uint32_t now) {
if (opticalCalibrationActive_) return;
optical_current_begin();
pwm_.lightOn();
opticalCalibrationActive_ = true;
opticalCalibrationStartedMs_ = now;
opticalCalibrationUpdatedMs_ = 0;
display_.show("Idiode: --.- mA", "Vcc: --.-- V");
Log::printf("CALIB", "optical LED ON; sense GPIO=%u, VCC GPIO=%u, settling %lums",
GPIO_OPTICAL_CURRENT, GPIO_OPTICAL_VCC, OPTICAL_CURRENT_SETTLE_MS);
}
void App::updateOpticalCalibration(uint32_t now, bool force) {
if (!opticalCalibrationActive_ ||
now - opticalCalibrationStartedMs_ < OPTICAL_CURRENT_SETTLE_MS) return;
(void)force;
OpticalCurrentMeasurement reading = {};
if (!optical_current_poll(reading)) return;
opticalCalibrationUpdatedMs_ = now;
char current[32], vcc[24];
snprintf(current, sizeof(current), "Idiode: %.1f mA", reading.currentMa);
snprintf(vcc, sizeof(vcc), "Vcc: %.2f V", reading.vccVoltage);
display_.show(current, vcc);
Log::printf("CALIB",
"raw sense=%u vcc=%u | ADC sense=%.3fV vcc=%.3fV | Usense=%.3fV Vcc=%.3fV | Idiode=%.1fmA",
reading.senseRaw, reading.vccRaw, reading.senseAdcVoltage,
reading.vccAdcVoltage, reading.senseVoltage, reading.vccVoltage,
reading.currentMa);
}
void App::leaveOpticalCalibration() {
if (!opticalCalibrationActive_) return;
pwm_.stop();
opticalCalibrationActive_ = false;
Log::event("CALIB", "optical LED OFF; calibration menu left");
}
void App::startTest() {
leaveIdlePowerSave();
pwm_.stop();
setActivePerformance(true);
sanitizeRange();
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD) {
startBoardTest();
return;
}
if (static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT) {
startPwmOutput();
return;
}
params_ = store_.params(settings_); stageCount_ = pulseWidthPointCount(params_.maxPulseNs, params_.minPulseNs);
stageIndex_ = 0; requestedHz_ = params_.frequencyHz; requestedPulseNs_ = 0; pendingReason_ = FailReason::NONE;
havePeer_ = false; lastHeartbeatMs_ = 0; lastPeerSeenMs_ = 0;
@@ -787,6 +952,129 @@ void App::startTest() {
else { state_ = AppState::SLAVE_READY; Log::event("TEST", "Slave armed and waiting for Master"); display_.show(UiText::SLAVE_READY, UiText::WAIT_MASTER); }
}
void App::startBoardTest() {
const BoardTest test = static_cast<BoardTest>(settings_.boardTest);
state_ = AppState::BOARD_TEST;
boardTestUpdatedMs_ = boardDisplayUpdatedMs_ = 0;
boardPwmLightOn_ = false;
rxPinStateKnown_ = false;
Log::printf("BOARD", "starting test=%s", boardTestName(test));
// ADC and RX checks need the optical transmitter continuously illuminated.
// The PWM-output check drives the same pin itself and therefore replaces
// the constant active level with its test waveform.
if (test != BoardTest::PWM_OUTPUT) {
pwm_.lightOn();
Log::printf("BOARD", "optical output active GPIO=%u level=%s", GPIO_PWM,
TX_LIGHT_ON_GPIO_LEVEL == HIGH ? "HIGH" : "LOW");
}
if (test == BoardTest::ADC) {
if (!BOARD_ADC_AVAILABLE) {
Serial.println("BOARD ADC: unavailable in MAKETKA profile");
display_.show(UiText::ADC_UNAVAILABLE, UiText::BOARD_STOP);
return;
}
pinMode(GPIO_ANALOG_RX, INPUT);
pinMode(GPIO_VBAT, INPUT);
display_.show(UiText::BOARD_TEST_NAMES[static_cast<uint8_t>(BoardTest::ADC)],
UiText::BOARD_STOP);
} else if (test == BoardTest::PWM_OUTPUT) {
boardPwmLightOn_ = true;
boardTestUpdatedMs_ = millis();
pwm_.lightOn();
Serial.printf("BOARD PWM: GPIO=%u frequency=%luHz duty=50%% light=ON\n",
GPIO_PWM, BOARD_PWM_TEST_FREQUENCY_HZ);
display_.show(UiText::BOARD_TEST_NAMES[static_cast<uint8_t>(test)], UiText::BOARD_STOP);
} else {
pinMode(GPIO_RX, INPUT);
display_.show(UiText::BOARD_TEST_NAMES[static_cast<uint8_t>(test)], UiText::BOARD_STOP);
}
}
void App::updateBoardTest(uint32_t now) {
const BoardTest test = static_cast<BoardTest>(settings_.boardTest);
if (test == BoardTest::ADC) {
if (!BOARD_ADC_AVAILABLE || now - boardTestUpdatedMs_ < BOARD_ADC_PRINT_INTERVAL_MS) return;
boardTestUpdatedMs_ = now;
const uint16_t analogRx = analogRead(GPIO_ANALOG_RX);
const uint16_t vbat = analogRead(GPIO_VBAT);
Serial.printf("ADC analog_rx=%u vbat=%u\n", analogRx, vbat);
if (now - boardDisplayUpdatedMs_ >= BOARD_TEST_DISPLAY_INTERVAL_MS) {
boardDisplayUpdatedMs_ = now;
char one[32], two[32];
snprintf(one, sizeof(one), "ADC RX: %u", analogRx);
snprintf(two, sizeof(two), "ADC VBAT: %u", vbat);
display_.show(one, two);
}
return;
}
if (test == BoardTest::PWM_OUTPUT) {
if (now - boardTestUpdatedMs_ < BOARD_PWM_TEST_HALF_PERIOD_MS) return;
boardTestUpdatedMs_ = now;
boardPwmLightOn_ = !boardPwmLightOn_;
if (boardPwmLightOn_) pwm_.lightOn();
else pwm_.stop();
Serial.printf("BOARD PWM: light=%s\n", boardPwmLightOn_ ? "ON" : "OFF");
char two[32];
snprintf(two, sizeof(two), "%luHz 50%%: %s", BOARD_PWM_TEST_FREQUENCY_HZ,
boardPwmLightOn_ ? "ON" : "OFF");
display_.show(UiText::BOARD_TEST_NAMES[static_cast<uint8_t>(test)], two);
return;
}
const bool level = digitalRead(GPIO_RX) == HIGH;
if (!rxPinStateKnown_ || level != rxPinState_) {
rxPinState_ = level;
rxPinStateKnown_ = true;
Serial.printf("RX GPIO=%u state=%s (%u)\n", GPIO_RX,
level ? "HIGH" : "LOW", level ? 1U : 0U);
char two[32];
snprintf(two, sizeof(two), "GPIO %u: %s", GPIO_RX, level ? "HIGH" : "LOW");
display_.show(UiText::BOARD_TEST_NAMES[static_cast<uint8_t>(test)], two);
}
}
void App::stopBoardTest() {
Log::printf("BOARD", "stopping test=%s", boardTestName(static_cast<BoardTest>(settings_.boardTest)));
pwm_.stop();
state_ = AppState::IDLE;
setActivePerformance(false);
showIdle();
}
void App::startPwmOutput() {
params_ = store_.params(settings_);
requestedHz_ = params_.frequencyHz;
requestedPulseNs_ = params_.maxPulseNs;
stageIndex_ = 0;
stageCount_ = 1;
pwm_.configureActiveLight(true);
if (!pwm_.start(requestedHz_, requestedPulseNs_, actual_)) {
Log::printf("PWM", "start failed: frequency=%luHz pulse=%luns",
requestedHz_, requestedPulseNs_);
finish(false, FailReason::RESOLUTION);
return;
}
state_ = AppState::PWM_OUTPUT;
char target[32], one[48];
formatTarget(actual_.actualHz, actual_.actualPulseNs, target, sizeof(target));
snprintf(one, sizeof(one), "%s: %s", uiTestName(TestKind::PWM_OUTPUT), target);
display_.show(one, UiText::BOARD_STOP);
Log::printf("PWM", "continuous output GPIO=%u requested=%luHz/%luns actual=%luHz/%luns duty=%.2f%%",
GPIO_PWM, requestedHz_, requestedPulseNs_, actual_.actualHz,
actual_.actualPulseNs, actual_.actualDutyPct);
}
void App::stopPwmOutput() {
Log::event("PWM", "continuous output stopped");
pwm_.stop();
state_ = AppState::IDLE;
setActivePerformance(false);
showIdle();
}
bool App::armSlave(bool preserveDisplay) {
setActivePerformance(false);
pwm_.stop();
@@ -1289,15 +1577,14 @@ bool App::usbHostPresent() const {
}
void App::setStandbyOpticalOutput() {
// A gate driver must never be held enabled while the tester is idle or
// showing a result. DRIVER is SOLO-only, so force real light OFF here.
if (static_cast<Role>(settings_.role) == Role::SLAVE ||
static_cast<TestKind>(settings_.testKind) == TestKind::DRIVER) pwm_.stop();
else pwm_.active();
// Calibration and tests may hold the transmitter active. Idle/result
// screens must always detach PWM and restore the physical light-OFF level.
pwm_.stop();
}
void App::setActivePerformance(bool active) {
const bool driverMode = initialized_ &&
static_cast<TestGroup>(settings_.testGroup) == TestGroup::OPTICS &&
static_cast<TestKind>(settings_.testKind) == TestKind::DRIVER;
const uint32_t targetMhz = active ? (driverMode ? 240U : 160U) : 80U;
if (getCpuFrequencyMhz() != targetMhz && !setCpuFrequencyMhz(targetMhz))
@@ -1406,13 +1693,26 @@ void App::printConfiguration() {
if (SERIAL_MINIMAL_LOG) return;
const char *board = TARGET_IS_C3 ? "ESP32-C3" : "ESP32-S3";
uint8_t mac[6] = {}; esp_read_mac(mac, ESP_MAC_WIFI_STA);
Serial.printf("\nOptical Channel Tester | %s | mode=%s/%s | light=%s\n", board,
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD) {
Serial.printf("\nOptical Channel Tester | %s | group=BOARD | test=%s\n", board,
boardTestName(static_cast<BoardTest>(settings_.boardTest)));
Serial.printf("GPIO PWM=%u RX=%u ANALOG_RX=%u VBAT=%u START=%u MODE=%u SDA=%u SCL=%u\n",
GPIO_PWM, GPIO_RX, GPIO_ANALOG_RX, GPIO_VBAT, GPIO_BUTTON_START,
GPIO_BUTTON_MODE, GPIO_SDA, GPIO_SCL);
return;
}
Serial.printf("\nOptical Channel Tester | %s | group=OPTICS | mode=%s/%s | light=%s\n", board,
roleName(static_cast<Role>(settings_.role)),
testKindName(static_cast<TestKind>(settings_.testKind)),
configuredLevelName(settings_));
Serial.printf("MAC=%02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
Serial.printf("GPIO PWM=%u RX=%u START=%u MODE=%u SDA=%u SCL=%u\n", GPIO_PWM, GPIO_RX,
GPIO_BUTTON_START, GPIO_BUTTON_MODE, GPIO_SDA, GPIO_SCL);
if (static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT) {
Serial.printf("Continuous PWM output %lu Hz, pulse %lu ns; RX unused\n",
params_.frequencyHz, params_.maxPulseNs);
return;
}
if (static_cast<TestKind>(settings_.testKind) == TestKind::DRIVER) {
const char *code = lightCodeName(static_cast<LightCode>(settings_.lightCode));
Serial.printf("Test %lu Hz, pulse %lu..%lu ns, accuracy %.2f%%, %lums, TX light=%c RX active light=%c\n",

View File

@@ -3,12 +3,13 @@
#include "Display.h"
#include "DriverTest.h"
#include "Measurement.h"
#include "OpticalCurrent.h"
#include "Pwm.h"
#include "Radio.h"
#include "SettingsStore.h"
enum class AppState : uint8_t {
IDLE, MENU, SOLO_MEASURE, SOLO_DRIVER, MASTER_DISCOVER, MASTER_WAIT_READY,
IDLE, MENU, BOARD_TEST, PWM_OUTPUT, SOLO_MEASURE, SOLO_DRIVER, MASTER_DISCOVER, MASTER_WAIT_READY,
MASTER_WAIT_RESULT, MASTER_FINALIZE, SLAVE_READY, SLAVE_WAIT_START, SLAVE_MEASURE,
SLAVE_WAIT_ACK, FINISHED
};
@@ -23,9 +24,17 @@ class App {
void finishInitialization(bool factoryReset);
void showMenu();
void changeMenu(int direction);
void enterOpticalCalibration(uint32_t now);
void updateOpticalCalibration(uint32_t now, bool force = false);
void leaveOpticalCalibration();
void cycleRunMode();
void sanitizeRange();
void startTest();
void startBoardTest();
void updateBoardTest(uint32_t now);
void stopBoardTest();
void startPwmOutput();
void stopPwmOutput();
bool armSlave(bool preserveDisplay = false);
bool prepareStage(bool showProgress = true);
bool startLocalMeasurement(float hz, float duty);
@@ -52,7 +61,6 @@ class App {
void updateHeartbeat();
bool packetForCurrent(const ProtocolPacket &p) const;
void serviceIdlePowerSave();
void serviceRxPinStateLog();
void serviceSerialConsole();
void handleSerialCommand(char *line);
void printSerialHelp();
@@ -100,6 +108,12 @@ class App {
uint32_t lastOpticalWakeToggleMs_ = 0;
bool opticalWakeActive_ = false;
bool rxPinStateKnown_ = false, rxPinState_ = false;
uint32_t boardTestUpdatedMs_ = 0;
uint32_t boardDisplayUpdatedMs_ = 0;
bool boardPwmLightOn_ = false;
bool opticalCalibrationActive_ = false;
uint32_t opticalCalibrationStartedMs_ = 0;
uint32_t opticalCalibrationUpdatedMs_ = 0;
mutable uint32_t lastUsbHostSeenMs_ = 0;
char serialLine_[96] = {};
uint8_t serialLineLength_ = 0;

View File

@@ -2,34 +2,58 @@
#include <Arduino.h>
// Uncomment to build the standalone PWM/RX pulse probe instead of the tester UI.
#define SIGNAL_PROBE_FIRMWARE
// ------------------------- Hardware configuration -------------------------
// Enabled for the hand-wired prototype. Comment out for the production PCB.
// Both profiles map S3 signals by physical header position with 5V/GND aligned.
#define MAKETKA
// Additionally log raw GPIO_RX level changes while no test is running.
//#define RX_PIN_CHANGE_TEST
// Select exactly one populated receiver circuit. Use
// BOARD_RX_INTERFACE_DIGITAL for MAKETKA and boards fitted with GPIO_RX.
#define BOARD_RX_INTERFACE_ADC 1
#define BOARD_RX_INTERFACE_DIGITAL 2
#ifndef BOARD_RX_INTERFACE
#define BOARD_RX_INTERFACE BOARD_RX_INTERFACE_DIGITAL
#endif
// Standalone PWM output check. While enabled, the normal application is not
// started: GPIO_PWM continuously outputs the frequency and duty below.
// Comment this define out after the hardware check.
//#define PWM_OUTPUT_TEST
constexpr uint32_t PWM_OUTPUT_TEST_FREQUENCY_HZ = 1000;
constexpr uint32_t PWM_OUTPUT_TEST_SWEEP_PERIOD_MS = 2000;
constexpr uint32_t PWM_OUTPUT_TEST_UPDATE_MS = 10;
constexpr uint32_t PWM_OUTPUT_TEST_MIN_PULSE_NS = 1000;
constexpr uint32_t PWM_OUTPUT_TEST_MAX_PULSE_NS = 10000;
#if BOARD_RX_INTERFACE != BOARD_RX_INTERFACE_ADC && \
BOARD_RX_INTERFACE != BOARD_RX_INTERFACE_DIGITAL
#error "BOARD_RX_INTERFACE must select ADC or DIGITAL"
#endif
#if defined(MAKETKA) && BOARD_RX_INTERFACE == BOARD_RX_INTERFACE_ADC
#error "MAKETKA requires BOARD_RX_INTERFACE_DIGITAL"
#endif
constexpr bool BOARD_RX_USES_ADC =
BOARD_RX_INTERFACE == BOARD_RX_INTERFACE_ADC;
// Board-test parameters. These checks are selected at runtime from the UI;
// no special diagnostic firmware build is required.
constexpr uint32_t BOARD_PWM_TEST_FREQUENCY_HZ = 1;
constexpr uint32_t BOARD_PWM_TEST_HALF_PERIOD_MS = 500;
#if CONFIG_IDF_TARGET_ESP32C3
constexpr bool TARGET_IS_C3 = true;
constexpr uint8_t GPIO_PWM = 3;
constexpr uint8_t GPIO_RX = 4;
#ifdef MAKETKA
constexpr bool BOARD_ADC_AVAILABLE = false;
constexpr uint8_t GPIO_BUTTON_MODE = 0;
constexpr uint8_t GPIO_BUTTON_START = 1;
constexpr uint8_t GPIO_OPTICAL_CURRENT = 2;
constexpr uint8_t GPIO_OPTICAL_VCC = 5;
constexpr uint8_t GPIO_VBAT = UINT8_MAX;
constexpr uint8_t GPIO_ANALOG_RX = UINT8_MAX;
#else
constexpr bool BOARD_ADC_AVAILABLE = true;
constexpr uint8_t GPIO_BUTTON_MODE = 20;
constexpr uint8_t GPIO_BUTTON_START = 10;
constexpr uint8_t GPIO_OPTICAL_CURRENT = 1;
constexpr uint8_t GPIO_OPTICAL_VCC = 5;
constexpr uint8_t GPIO_VBAT = 2;
constexpr uint8_t GPIO_ANALOG_RX = 0;
#endif
@@ -38,20 +62,28 @@ constexpr uint8_t GPIO_SCL = 7;
#elif CONFIG_IDF_TARGET_ESP32S3
constexpr bool TARGET_IS_C3 = false;
#ifdef MAKETKA
constexpr bool BOARD_ADC_AVAILABLE = false;
// Same physical header contacts as the C3 MAKETKA profile when 5V/GND align.
constexpr uint8_t GPIO_PWM = 12;
constexpr uint8_t GPIO_RX = 13;
constexpr uint8_t GPIO_BUTTON_MODE = 9;
constexpr uint8_t GPIO_BUTTON_START = 10;
constexpr uint8_t GPIO_OPTICAL_CURRENT = 2;
constexpr uint8_t GPIO_OPTICAL_VCC = 6;
constexpr uint8_t GPIO_SDA = 44;
constexpr uint8_t GPIO_SCL = 1;
constexpr uint8_t GPIO_VBAT = UINT8_MAX;
constexpr uint8_t GPIO_ANALOG_RX = UINT8_MAX;
#else
constexpr bool BOARD_ADC_AVAILABLE = true;
// The S3 SuperMini is fitted so its 5V and GND pins occupy the same PCB
// contacts as on the C3 SuperMini. Signals therefore follow header position.
constexpr uint8_t GPIO_PWM = 12;
constexpr uint8_t GPIO_RX = 13;
constexpr uint8_t GPIO_BUTTON_MODE = 5;
constexpr uint8_t GPIO_BUTTON_START = 4;
constexpr uint8_t GPIO_OPTICAL_CURRENT = 10;
constexpr uint8_t GPIO_OPTICAL_VCC = 6;
constexpr uint8_t GPIO_SDA = 44;
constexpr uint8_t GPIO_SCL = 1;
constexpr uint8_t GPIO_VBAT = 11;
@@ -61,6 +93,22 @@ constexpr uint8_t GPIO_ANALOG_RX = 9;
#error "Only ESP32-C3 and ESP32-S3 are supported"
#endif
static_assert(GPIO_OPTICAL_CURRENT != GPIO_PWM &&
GPIO_OPTICAL_CURRENT != GPIO_RX &&
GPIO_OPTICAL_CURRENT != GPIO_BUTTON_MODE &&
GPIO_OPTICAL_CURRENT != GPIO_BUTTON_START &&
GPIO_OPTICAL_CURRENT != GPIO_SDA &&
GPIO_OPTICAL_CURRENT != GPIO_SCL,
"Optical-current ADC GPIO conflicts with another board signal");
static_assert(GPIO_OPTICAL_VCC != GPIO_OPTICAL_CURRENT &&
GPIO_OPTICAL_VCC != GPIO_PWM &&
GPIO_OPTICAL_VCC != GPIO_RX &&
GPIO_OPTICAL_VCC != GPIO_BUTTON_MODE &&
GPIO_OPTICAL_VCC != GPIO_BUTTON_START &&
GPIO_OPTICAL_VCC != GPIO_SDA &&
GPIO_OPTICAL_VCC != GPIO_SCL,
"Optical-VCC ADC GPIO conflicts with another board signal");
constexpr uint8_t OLED_ROTATION = 0;
constexpr uint8_t OLED_ADDRESS = 0x3C;
@@ -69,6 +117,13 @@ constexpr uint32_t SERIAL_BAUD = 115200;
// Native USB CDC may keep a stale "connected" state after light sleep. Keep
// logging non-blocking so a missing host can never delay button polling.
constexpr uint32_t SERIAL_TX_TIMEOUT_MS = 2;
constexpr uint32_t BOARD_ADC_PRINT_INTERVAL_MS = 100;
constexpr uint32_t BOARD_TEST_DISPLAY_INTERVAL_MS = 250;
constexpr float OPTICAL_VCC = 5.1f;
constexpr float OPTICAL_SENSE_R = 47.0f;
constexpr float OPTICAL_DIVIDER_RATIO = 2.0f;
constexpr uint32_t OPTICAL_CURRENT_SETTLE_MS = 20;
constexpr uint32_t OPTICAL_CURRENT_AVERAGING_MS = 200;
constexpr bool SERIAL_ACTION_LOG = true;
constexpr bool SERIAL_LOG_TIMESTAMPS = true;
constexpr bool SERIAL_MINIMAL_LOG = true;

View File

@@ -18,7 +18,15 @@ constexpr const char *ROLE_NAMES[] = {
};
constexpr const char *TEST_NAMES[] = {
"ОПТИКА", "ДРАЙВЕР"
"ОПТИКА", "ДРАЙВЕР", "ШИМ"
};
constexpr const char *TEST_GROUP_NAMES[] = {
"ОПТИКА", "ПЛАТА"
};
constexpr const char *BOARD_TEST_NAMES[] = {
"АЦП", "ШИМ ВЫХОД", "RX ВХОД"
};
constexpr const char *FAIL_NAMES[] = {
@@ -44,15 +52,21 @@ constexpr const char *MODE_PREFIX = "РЕЖИМ: ";
constexpr const char *START_RUN = "ГОТОВ К ЗАПУСКУ";
constexpr const char *MENU_FREQUENCY = "ЧАСТОТА ШИМ:";
constexpr const char *MENU_TEST_GROUP = "ГРУППА ТЕСТОВ:";
constexpr const char *MENU_MAX_PULSE = "МАКС. ИМПУЛЬС:";
constexpr const char *MENU_PWM_PULSE = "ИМПУЛЬС ШИМ:";
constexpr const char *MENU_MIN_PULSE = "МИН. ИМПУЛЬС:";
constexpr const char *MENU_ACCURACY = "ТОЧНОСТЬ:";
constexpr const char *MENU_TEST_TIME = "ВРЕМЯ ВЫБОРКИ:";
constexpr const char *MENU_LIGHT_CODE = "АКТ. УРОВЕНЬ:";
constexpr const char *MENU_OPTICAL_CALIBRATION = "КАЛИБР. ОПТИКИ";
constexpr const char *LIGHT_CODE_FORMAT = "TX:%c, RX:%c";
constexpr const char *LIGHT_AUTO = "АВТО";
constexpr const char *LIGHT_AUTO_FORMAT = "TX/RX: АВТО";
constexpr const char *MENU_TOTAL_TIME = "ОБЩЕЕ ВРЕМЯ:";
constexpr const char *BOARD_READY = "START: ЗАПУСК";
constexpr const char *BOARD_STOP = "УДЕРЖ START: СТОП";
constexpr const char *ADC_UNAVAILABLE = "АЦП НЕТ НА МАКЕТКЕ";
constexpr const char *FREQUENCY_UNIT = " Гц";
constexpr const char *SLAVE_READY = "СЛЕЙВ ГОТОВ";
@@ -84,7 +98,15 @@ constexpr const char *ROLE_NAMES[] = {
};
constexpr const char *TEST_NAMES[] = {
"OPTICAL", "DRIVER"
"OPTICAL", "DRIVER", "PWM"
};
constexpr const char *TEST_GROUP_NAMES[] = {
"OPTICS", "BOARD"
};
constexpr const char *BOARD_TEST_NAMES[] = {
"ADC", "PWM OUTPUT", "RX INPUT"
};
constexpr const char *FAIL_NAMES[] = {
@@ -110,15 +132,21 @@ constexpr const char *MODE_PREFIX = "MODE: ";
constexpr const char *START_RUN = "READY TO START";
constexpr const char *MENU_FREQUENCY = "PWM FREQUENCY:";
constexpr const char *MENU_TEST_GROUP = "TEST GROUP:";
constexpr const char *MENU_MAX_PULSE = "MAX PULSE:";
constexpr const char *MENU_PWM_PULSE = "PWM PULSE:";
constexpr const char *MENU_MIN_PULSE = "MIN PULSE:";
constexpr const char *MENU_ACCURACY = "ACCURACY:";
constexpr const char *MENU_TEST_TIME = "TEST TIME:";
constexpr const char *MENU_LIGHT_CODE = "ACTIVE LEVEL:";
constexpr const char *MENU_OPTICAL_CALIBRATION = "OPTICAL CALIBRATION";
constexpr const char *LIGHT_CODE_FORMAT = "TX:%c, RX:%c";
constexpr const char *LIGHT_AUTO = "AUTO";
constexpr const char *LIGHT_AUTO_FORMAT = "TX/RX: AUTO";
constexpr const char *MENU_TOTAL_TIME = "TOTAL TIME:";
constexpr const char *BOARD_READY = "START TO RUN";
constexpr const char *BOARD_STOP = "HOLD START TO STOP";
constexpr const char *ADC_UNAVAILABLE = "ADC ABSENT ON PROTOTYPE";
constexpr const char *FREQUENCY_UNIT = " Hz";
constexpr const char *SLAVE_READY = "SLAVE READY";

View File

@@ -9,12 +9,24 @@ const char *roleName(Role r) {
return i < 3 ? names[i] : "?";
}
const char *testKindName(TestKind kind) {
static const char *names[] = {"OPTICAL", "DRIVER"};
const uint8_t i = static_cast<uint8_t>(kind);
const char *testGroupName(TestGroup group) {
static const char *names[] = {"OPTICS", "BOARD"};
const uint8_t i = static_cast<uint8_t>(group);
return i < 2 ? names[i] : "?";
}
const char *testKindName(TestKind kind) {
static const char *names[] = {"OPTICAL", "DRIVER", "PWM OUTPUT"};
const uint8_t i = static_cast<uint8_t>(kind);
return i < 3 ? names[i] : "?";
}
const char *boardTestName(BoardTest test) {
static const char *names[] = {"ADC", "PWM OUTPUT", "RX INPUT"};
const uint8_t i = static_cast<uint8_t>(test);
return i < 3 ? names[i] : "?";
}
const char *lightCodeName(LightCode code) {
static const char *names[] = {"HH", "HL", "LH", "LL"};
const uint8_t i = static_cast<uint8_t>(code);

View File

@@ -4,7 +4,9 @@
#include <stddef.h>
enum class Role : uint8_t { SOLO, MASTER, SLAVE };
enum class TestKind : uint8_t { OPTICAL, DRIVER };
enum class TestGroup : uint8_t { OPTICS, BOARD };
enum class TestKind : uint8_t { OPTICAL, DRIVER, PWM_OUTPUT };
enum class BoardTest : uint8_t { ADC, PWM_OUTPUT, RX_INPUT };
enum class LightCode : uint8_t { HH, HL, LH, LL };
enum class FailReason : uint8_t {
NONE, NO_SIGNAL, PERIOD_OUT, DUTY_OUT, EXTRA_EDGE, GLITCH, LOST_EDGE,
@@ -13,7 +15,9 @@ enum class FailReason : uint8_t {
};
const char *roleName(Role role);
const char *testGroupName(TestGroup group);
const char *testKindName(TestKind kind);
const char *boardTestName(BoardTest test);
const char *lightCodeName(LightCode code);
const char *failName(FailReason reason);
@@ -27,7 +31,8 @@ struct Settings {
uint8_t minPulseIndex;
uint8_t accuracyIndex;
uint8_t timeIndex;
uint16_t reserved;
uint8_t testGroup;
uint8_t boardTest;
uint32_t checksum;
};

View File

@@ -8,17 +8,29 @@
#include <esp_task_wdt.h>
#include <esp_timer.h>
#include <esp32-hal-cpu.h>
#include <soc/gpio_struct.h>
#include <soc/gpio_reg.h>
#include <soc/soc.h>
#include <string.h>
#if CONFIG_IDF_TARGET_ESP32C3
#include <riscv/rv_utils.h>
#endif
static inline uint32_t IRAM_ATTR maskAllInterrupts() {
#if CONFIG_IDF_TARGET_ESP32C3
return RV_CLEAR_CSR(mstatus, MSTATUS_MIE);
#else
uint32_t state;
asm volatile("rsil %0, 15" : "=a"(state) :: "memory");
return state;
#endif
}
static inline void IRAM_ATTR restoreInterrupts(uint32_t state) {
#if CONFIG_IDF_TARGET_ESP32C3
RV_SET_CSR(mstatus, state & MSTATUS_MIE);
#else
asm volatile("wsr %0, ps\nrsync" :: "a"(state) : "memory");
#endif
}
void DriverEdgeStats::reset() {
@@ -193,7 +205,7 @@ void IRAM_ATTR DriverTest::pollTaskLoop() {
constexpr uint32_t PIN_MASK = (1UL << GPIO_PWM) | (1UL << GPIO_RX);
for (;;) {
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
uint32_t levels = GPIO.in & PIN_MASK;
uint32_t levels = REG_READ(GPIO_IN_REG) & PIN_MASK;
uint32_t nextStart = 0;
uint32_t windowEnd = 0;
uint32_t lastTxStart = 0;
@@ -205,7 +217,7 @@ void IRAM_ATTR DriverTest::pollTaskLoop() {
uint32_t interruptState = 0;
auto sampleOnce = [&]() {
const uint32_t current = GPIO.in & PIN_MASK;
const uint32_t current = REG_READ(GPIO_IN_REG) & PIN_MASK;
if (current == levels) return;
const uint32_t now = esp_cpu_get_cycle_count();
const uint32_t changed = current ^ levels;
@@ -636,8 +648,7 @@ void IRAM_ATTR DriverTest::recordRaw(uint32_t tick, bool rising,
return;
}
ring_[write] = {tick, rising, source};
asm volatile("memw" ::: "memory");
ringWrite_ = next;
__atomic_store_n(&ringWrite_, next, __ATOMIC_RELEASE);
}
size_t DriverTest::readRaw(TimedEvent *events, size_t capacity,

View File

@@ -1,57 +1,12 @@
#include "App.h"
#include "Config.h"
#include <math.h>
#ifdef PWM_OUTPUT_TEST
PwmGenerator pwmOutputTest;
uint32_t pwmOutputTestPulseNs = PWM_OUTPUT_TEST_MIN_PULSE_NS;
uint32_t pwmOutputTestUpdatedMs = 0;
void setup() {
Serial.begin(SERIAL_BAUD);
delay(200);
Serial.printf("\nPWM OUTPUT TEST: GPIO=%u requested=%luHz pulse=%lu..%luns sine=%lums light-off=%s\n",
GPIO_PWM, PWM_OUTPUT_TEST_FREQUENCY_HZ,
PWM_OUTPUT_TEST_MIN_PULSE_NS, PWM_OUTPUT_TEST_MAX_PULSE_NS,
PWM_OUTPUT_TEST_SWEEP_PERIOD_MS,
TX_LIGHT_OFF_GPIO_LEVEL == HIGH ? "HIGH" : "LOW");
pwmOutputTest.begin();
ActualPwm actual = {};
if (pwmOutputTest.start(PWM_OUTPUT_TEST_FREQUENCY_HZ,
pwmOutputTestPulseNs, actual)) {
Serial.printf("PWM OUTPUT TEST STARTED: actual=%luHz pulse=%luns bits=%u\n",
actual.actualHz, actual.actualPulseNs, actual.bits);
} else {
Serial.println("PWM OUTPUT TEST FAILED");
}
}
void loop() {
const uint32_t now = millis();
if (now - pwmOutputTestUpdatedMs < PWM_OUTPUT_TEST_UPDATE_MS) return;
pwmOutputTestUpdatedMs = now;
constexpr float PWM_TWO_PI = 6.28318530718f;
const float phase = PWM_TWO_PI * (now % PWM_OUTPUT_TEST_SWEEP_PERIOD_MS) /
PWM_OUTPUT_TEST_SWEEP_PERIOD_MS;
const float center = (PWM_OUTPUT_TEST_MIN_PULSE_NS + PWM_OUTPUT_TEST_MAX_PULSE_NS) * 0.5f;
const float amplitude = (PWM_OUTPUT_TEST_MAX_PULSE_NS - PWM_OUTPUT_TEST_MIN_PULSE_NS) * 0.5f;
const uint32_t pulseNs = static_cast<uint32_t>(center + amplitude * sinf(phase) + 0.5f);
if (pulseNs == pwmOutputTestPulseNs) return;
ActualPwm actual = {};
if (pwmOutputTest.start(PWM_OUTPUT_TEST_FREQUENCY_HZ, pulseNs, actual)) {
pwmOutputTestPulseNs = pulseNs;
} else {
Serial.printf("PWM OUTPUT TEST UPDATE FAILED: pulse=%luns\n", pulseNs);
delay(100);
}
}
#ifdef SIGNAL_PROBE_FIRMWARE
#include "SignalProbe.h"
SignalProbe app;
#else
#include "App.h"
App app;
#endif
void setup() { app.begin(); }
void loop() { app.update(); }
#endif

View File

@@ -0,0 +1,74 @@
#include "OpticalCurrent.h"
#include "Config.h"
namespace {
struct AdcAccumulator {
uint64_t senseRaw = 0;
uint64_t vccRaw = 0;
uint64_t senseMillivolts = 0;
uint64_t vccMillivolts = 0;
uint32_t samples = 0;
uint32_t startedMs = 0;
};
AdcAccumulator accumulator;
void resetAccumulator(uint32_t now) {
accumulator = {};
accumulator.startedMs = now;
}
OpticalCurrentMeasurement finishMeasurement() {
const float senseAdcVoltage =
accumulator.senseMillivolts / (1000.0f * accumulator.samples);
const float vccAdcVoltage =
accumulator.vccMillivolts / (1000.0f * accumulator.samples);
const float senseVoltage = senseAdcVoltage * OPTICAL_DIVIDER_RATIO;
const float vccVoltage = vccAdcVoltage * OPTICAL_DIVIDER_RATIO;
const float resistorVoltage = vccVoltage - senseVoltage;
const float currentMa = resistorVoltage * 1000.0f / OPTICAL_SENSE_R;
return {
static_cast<uint16_t>(accumulator.senseRaw / accumulator.samples),
static_cast<uint16_t>(accumulator.vccRaw / accumulator.samples),
senseAdcVoltage, vccAdcVoltage, senseVoltage, vccVoltage,
currentMa > 0.0f ? currentMa : 0.0f
};
}
}
void optical_current_begin(void) {
analogReadResolution(12);
pinMode(GPIO_OPTICAL_CURRENT, INPUT);
pinMode(GPIO_OPTICAL_VCC, INPUT);
// Both 10k/10k dividers can present about 2.5 V to their ADC inputs.
analogSetPinAttenuation(GPIO_OPTICAL_CURRENT, ADC_11db);
analogSetPinAttenuation(GPIO_OPTICAL_VCC, ADC_11db);
resetAccumulator(0);
}
bool optical_current_poll(OpticalCurrentMeasurement &measurement) {
const uint32_t now = millis();
if (!accumulator.startedMs) resetAccumulator(now ? now : 1U);
accumulator.senseRaw += analogRead(GPIO_OPTICAL_CURRENT);
accumulator.senseMillivolts += analogReadMilliVolts(GPIO_OPTICAL_CURRENT);
accumulator.vccRaw += analogRead(GPIO_OPTICAL_VCC);
accumulator.vccMillivolts += analogReadMilliVolts(GPIO_OPTICAL_VCC);
++accumulator.samples;
if (now - accumulator.startedMs < OPTICAL_CURRENT_AVERAGING_MS) return false;
measurement = finishMeasurement();
resetAccumulator(now);
return true;
}
OpticalCurrentMeasurement optical_get_led_measurement(void) {
OpticalCurrentMeasurement measurement = {};
resetAccumulator(millis());
while (!optical_current_poll(measurement)) delay(1);
return measurement;
}
float optical_get_led_current_ma(void) {
return optical_get_led_measurement().currentMa;
}

View File

@@ -0,0 +1,18 @@
#pragma once
#include <stdint.h>
struct OpticalCurrentMeasurement {
uint16_t senseRaw;
uint16_t vccRaw;
float senseAdcVoltage;
float vccAdcVoltage;
float senseVoltage;
float vccVoltage;
float currentMa;
};
void optical_current_begin(void);
bool optical_current_poll(OpticalCurrentMeasurement &measurement);
OpticalCurrentMeasurement optical_get_led_measurement(void);
float optical_get_led_current_ma(void);

View File

@@ -88,6 +88,19 @@ bool PulseReceiver::start(uint32_t expectedHz, float expectedDutyPct,
return startCapture(false);
}
bool PulseReceiver::startRaw() {
if (!queue_ || running_) return false;
#if OPTICAL_USE_MCPWM_CAPTURE
if (!captureTimer_) return false;
#endif
#if !OPTICAL_USE_MCPWM_CAPTURE
cpuTickHz_ = getCpuFrequencyMhz() * 1000000UL;
if (!cpuTickHz_) return false;
#endif
resetStream();
return startCapture(false);
}
#if OPTICAL_USE_MCPWM_CAPTURE
bool PulseReceiver::configureDriverTxCapture(bool risingEdge) {
if (running_) return false;
@@ -376,6 +389,18 @@ size_t PulseReceiver::readPeriods(PulsePeriod *periods, size_t capacity,
return count;
}
size_t PulseReceiver::readRawEdges(CaptureEvent *events, size_t capacity,
TickType_t waitTicks) {
if (!events || !capacity) return 0;
size_t count = 0;
Edge edge = {};
while (count < capacity && nextOrderedEdge(edge, count ? 0 : waitTicks)) {
const TimedEdge timed = extendEdge(edge);
events[count++] = {timed.tick, timed.rising, CaptureSource::RX};
}
return count;
}
size_t PulseReceiver::readEvents(CaptureEvent *events, size_t capacity,
TickType_t waitTicks) {
if (!events || capacity < 3U || !txCaptureEnabled_ || !driverPulseTicks_ ||

View File

@@ -24,11 +24,13 @@ class PulseReceiver {
public:
bool begin();
bool start(uint32_t expectedHz, float expectedDutyPct, bool activeLightOn);
bool startRaw();
bool startDriver(uint32_t frequencyHz, uint32_t pulseNs,
bool activeTxLightOn);
void stop();
void resetStream();
size_t readPeriods(PulsePeriod *periods, size_t capacity, TickType_t waitTicks = 0);
size_t readRawEdges(CaptureEvent *events, size_t capacity, TickType_t waitTicks = 0);
size_t readEvents(CaptureEvent *events, size_t capacity, TickType_t waitTicks = 0);
uint32_t takeDroppedItems();
uint32_t tickHz() const;

View File

@@ -3,21 +3,26 @@
#include "Log.h"
#include <Preferences.h>
// testGroup/boardTest reuse the former zeroed reserved bytes, so version 11
// settings remain binary-compatible and keep the user's optical parameters.
namespace { constexpr uint16_t SETTINGS_VERSION = 11; constexpr char NAMESPACE[] = "opt-test"; }
void SettingsStore::defaults(Settings &s) const {
// 2 kHz, 200 us .. 2 us, 5%, 1 s.
// 2 kHz, 100 us .. 2 us, 5%, 1 s.
s = {SETTINGS_VERSION, static_cast<uint8_t>(Role::SOLO),
static_cast<uint8_t>(TestKind::OPTICAL), static_cast<uint8_t>(LightCode::HH),
2, 6, 3, 2, 3, 0, 0};
2, 4, 3, 2, 3, static_cast<uint8_t>(TestGroup::OPTICS),
static_cast<uint8_t>(BoardTest::ADC), 0};
s.checksum = settingsChecksum(s);
}
bool SettingsStore::valid(const Settings &s) const {
return s.version == SETTINGS_VERSION && s.role <= static_cast<uint8_t>(Role::SLAVE) &&
s.testKind <= static_cast<uint8_t>(TestKind::DRIVER) &&
s.testGroup <= static_cast<uint8_t>(TestGroup::BOARD) &&
s.boardTest <= static_cast<uint8_t>(BoardTest::RX_INPUT) &&
s.testKind <= static_cast<uint8_t>(TestKind::PWM_OUTPUT) &&
s.lightCode <= static_cast<uint8_t>(LightCode::LL) &&
(s.testKind != static_cast<uint8_t>(TestKind::DRIVER) ||
(s.testKind == static_cast<uint8_t>(TestKind::OPTICAL) ||
s.role == static_cast<uint8_t>(Role::SOLO)) &&
s.frequencyIndex < countOf(PWM_FREQUENCY_OPTIONS_HZ) &&
s.maxPulseIndex < countOf(MAX_PULSE_OPTIONS_NS) &&

View File

@@ -0,0 +1,236 @@
#include "SignalProbe.h"
#include "Config.h"
#include <esp32-hal-cpu.h>
namespace {
constexpr uint32_t DISPLAY_INTERVAL_MS = 250;
constexpr uint8_t PERIOD_TOLERANCE_PCT = 10;
bool pwmPointAvailable(uint32_t frequencyHz, uint32_t pulseNs) {
return static_cast<uint64_t>(frequencyHz) * pulseNs < 1000000000ULL;
}
void formatWidth(uint64_t nanoseconds, char *out, size_t size) {
if (nanoseconds < 1000ULL)
snprintf(out, size, "%lluns", nanoseconds);
else if (nanoseconds < 1000000ULL)
snprintf(out, size, "%.2fus", nanoseconds / 1000.0);
else
snprintf(out, size, "%.2fms", nanoseconds / 1000000.0);
}
void formatPulseCount(uint64_t count, char *out, size_t size) {
if (count < 1000000ULL) snprintf(out, size, "%llu", count);
else if (count < 1000000000ULL) snprintf(out, size, "%lluM", count / 1000000ULL);
else snprintf(out, size, "%lluG", count / 1000000000ULL);
}
}
SignalProbe::SignalProbe() : startButton_(GPIO_BUTTON_START),
modeButton_(GPIO_BUTTON_MODE) {}
void SignalProbe::begin() {
Serial.begin(SERIAL_BAUD);
#if ARDUINO_USB_CDC_ON_BOOT
Serial.setTxTimeoutMs(SERIAL_TX_TIMEOUT_MS);
#endif
setCpuFrequencyMhz(160);
startButton_.begin();
modeButton_.begin();
pwm_.begin();
pwm_.configureActiveLight(true);
display_.begin();
receiverInitialized_ = receiver_.begin();
rxReady_ = receiverInitialized_ && captureStart();
applyPwm();
Serial.printf("Signal probe: MODE short=frequency, MODE long=pulse, START short=reset RX minimum, START long=PWM on/off, hold both=RX active level; RX=%s\n",
rxActiveHigh_ ? "HIGH" : "LOW");
show();
}
bool SignalProbe::captureStart() {
if (!receiver_.startRaw()) {
Serial.println("RX capture start failed");
return false;
}
havePulseStart_ = false;
havePulseEnd_ = false;
extraEdgeInPeriod_ = false;
return true;
}
void SignalProbe::resetMinimum() {
if (rxReady_) receiver_.stop();
rxReady_ = receiverInitialized_ && captureStart();
minTicks_ = UINT64_MAX;
pulseCount_ = 0;
edgeCount_ = 0;
rejectedPeriods_ = 0;
displayDirty_ = true;
Serial.println("RX minimum reset");
}
void SignalProbe::updateCapture() {
if (!rxReady_) return;
CaptureEvent edges[64];
for (uint8_t batch = 0; batch < 8; ++batch) {
const size_t count = receiver_.readRawEdges(edges, countOf(edges));
if (!count) break;
uint64_t batchMinimum = minTicks_;
uint64_t batchPulses = 0;
uint64_t batchRejected = 0;
const bool activeRising = rxActiveHigh_;
const uint32_t expectedHz = PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_];
const uint64_t expectedPeriod = receiver_.tickHz() / expectedHz;
for (size_t i = 0; i < count; ++i) {
if (edges[i].rising == activeRising) {
if (havePulseStart_) {
const uint64_t period = edges[i].tick - pulseStartTick_;
const uint64_t width = havePulseEnd_
? pulseEndTick_ - pulseStartTick_ : 0;
const uint64_t error = period > expectedPeriod
? period - expectedPeriod : expectedPeriod - period;
if (havePulseEnd_ && !extraEdgeInPeriod_ && period && width && width < period &&
error * 100U <= expectedPeriod * PERIOD_TOLERANCE_PCT) {
if (width < batchMinimum) batchMinimum = width;
++batchPulses;
} else {
++batchRejected;
}
}
pulseStartTick_ = edges[i].tick;
havePulseStart_ = true;
havePulseEnd_ = false;
extraEdgeInPeriod_ = false;
} else if (havePulseStart_ && !havePulseEnd_ &&
edges[i].tick > pulseStartTick_) {
pulseEndTick_ = edges[i].tick;
havePulseEnd_ = true;
} else if (havePulseStart_) {
extraEdgeInPeriod_ = true;
}
}
const uint32_t dropped = receiver_.takeDroppedItems();
if (dropped) {
Serial.printf("RX capture overflow: %lu edges lost; restarting capture\n", dropped);
receiver_.stop();
rxReady_ = captureStart();
displayDirty_ = true;
return;
}
edgeCount_ += count;
pulseCount_ += batchPulses;
rejectedPeriods_ += batchRejected;
displayDirty_ = true;
if (batchMinimum < minTicks_) {
minTicks_ = batchMinimum;
displayDirty_ = true;
}
}
}
void SignalProbe::applyPwm() {
pwm_.stop();
if (!pwmEnabled_) {
Serial.println("PWM off");
displayDirty_ = true;
return;
}
const uint32_t frequency = PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_];
const uint32_t pulse = MAX_PULSE_OPTIONS_NS[pulseIndex_];
if (!pwm_.start(frequency, pulse, actual_)) {
Serial.printf("PWM start failed: %lu Hz, %lu ns\n", frequency, pulse);
pwmEnabled_ = false;
} else {
Serial.printf("PWM GPIO=%u requested=%luHz/%luns actual=%luHz/%luns\n",
GPIO_PWM, frequency, pulse, actual_.actualHz, actual_.actualPulseNs);
}
displayDirty_ = true;
}
void SignalProbe::advanceFrequency() {
const uint8_t count = static_cast<uint8_t>(countOf(PWM_FREQUENCY_OPTIONS_HZ));
for (uint8_t step = 0; step < count; ++step) {
frequencyIndex_ = static_cast<uint8_t>((frequencyIndex_ + 1U) % count);
if (pwmPointAvailable(PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_],
MAX_PULSE_OPTIONS_NS[pulseIndex_])) break;
}
applyPwm();
resetMinimum();
}
void SignalProbe::advancePulse() {
const uint8_t count = static_cast<uint8_t>(countOf(MAX_PULSE_OPTIONS_NS));
for (uint8_t step = 0; step < count; ++step) {
pulseIndex_ = static_cast<uint8_t>((pulseIndex_ + 1U) % count);
if (pwmPointAvailable(PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_],
MAX_PULSE_OPTIONS_NS[pulseIndex_])) break;
}
applyPwm();
resetMinimum();
}
void SignalProbe::show() {
char frequency[16], pulse[16], first[64], second[64];
const uint32_t shownFrequency = pwm_.running() ? actual_.actualHz
: PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_];
const uint32_t shownPulse = pwm_.running() ? actual_.actualPulseNs
: MAX_PULSE_OPTIONS_NS[pulseIndex_];
Display::formatPwmFrequency(shownFrequency,
frequency, sizeof(frequency));
Display::formatPulse(shownPulse, pulse, sizeof(pulse));
snprintf(first, sizeof(first), "PWM%s %s %s", pwmEnabled_ ? "" : " OFF",
frequency, pulse);
if (!rxReady_) {
snprintf(second, sizeof(second), "RX: ERROR");
} else if (minTicks_ == UINT64_MAX) {
snprintf(second, sizeof(second), "RX E:%llu BAD:%llu", edgeCount_, rejectedPeriods_);
} else {
char width[24], count[12];
const uint64_t nanoseconds =
(minTicks_ * 1000000000ULL + receiver_.tickHz() / 2U) / receiver_.tickHz();
formatWidth(nanoseconds, width, sizeof(width));
formatPulseCount(pulseCount_, count, sizeof(count));
snprintf(second, sizeof(second), "MIN:%s N:%s", width, count);
Serial.printf("RX minimum=%lluns, periods=%llu, rejected=%llu, edges=%llu\n",
nanoseconds, pulseCount_, rejectedPeriods_, edgeCount_);
}
display_.show(first, second, 0, 0, rxActiveHigh_ ? "H" : "L");
lastDisplayMs_ = millis();
displayDirty_ = false;
}
void SignalProbe::update() {
const uint32_t now = millis();
const ButtonEvent start = startButton_.update(now);
const ButtonEvent mode = modeButton_.update(now);
if (startButton_.pressed() && modeButton_.pressed()) {
if (!bothHeld_) {
bothHeld_ = true;
bothHeldSinceMs_ = now;
startButton_.suppressUntilRelease();
modeButton_.suppressUntilRelease();
}
if (!bothHeldHandled_ && now - bothHeldSinceMs_ >= BUTTON_LONG_PRESS_MS) {
rxActiveHigh_ = !rxActiveHigh_;
bothHeldHandled_ = true;
resetMinimum();
Serial.printf("RX active level=%s\n", rxActiveHigh_ ? "HIGH" : "LOW");
}
} else if (bothHeld_) {
if (!startButton_.pressed() && !modeButton_.pressed()) {
bothHeld_ = false;
bothHeldHandled_ = false;
}
} else {
if (mode == ButtonEvent::SHORT) advanceFrequency();
else if (mode == ButtonEvent::LONG) advancePulse();
if (start == ButtonEvent::SHORT) resetMinimum();
else if (start == ButtonEvent::LONG) {
pwmEnabled_ = !pwmEnabled_;
applyPwm();
}
}
updateCapture();
if (displayDirty_ && now - lastDisplayMs_ >= DISPLAY_INTERVAL_MS) show();
}

View File

@@ -0,0 +1,49 @@
#pragma once
#include "Config.h"
#include "Buttons.h"
#include "Display.h"
#include "Pwm.h"
#include "Receiver.h"
class SignalProbe {
public:
SignalProbe();
void begin();
void update();
private:
bool captureStart();
void resetMinimum();
void updateCapture();
void advanceFrequency();
void advancePulse();
void applyPwm();
void show();
Button startButton_, modeButton_;
Display display_;
PwmGenerator pwm_;
PulseReceiver receiver_;
ActualPwm actual_ = {};
uint8_t frequencyIndex_ = 2;
uint8_t pulseIndex_ = 0;
bool pwmEnabled_ = true;
bool rxActiveHigh_ = RX_LIGHT_ON_GPIO_LEVEL == HIGH;
bool receiverInitialized_ = false;
bool rxReady_ = false;
bool havePulseStart_ = false;
bool havePulseEnd_ = false;
bool extraEdgeInPeriod_ = false;
bool displayDirty_ = true;
uint64_t pulseStartTick_ = 0;
uint64_t pulseEndTick_ = 0;
uint64_t minTicks_ = UINT64_MAX;
uint64_t pulseCount_ = 0;
uint64_t edgeCount_ = 0;
uint64_t rejectedPeriods_ = 0;
uint32_t lastDisplayMs_ = 0;
uint32_t bothHeldSinceMs_ = 0;
bool bothHeld_ = false;
bool bothHeldHandled_ = false;
};

View File

@@ -0,0 +1,1866 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Physical_Order=3*
G04 Layer_Color=16711680*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD19R,1.2000X1.4000*%
%ADD20R,1.3000X1.5000*%
%ADD21R,1.5000X1.3000*%
%ADD22R,1.4000X1.2000*%
%ADD43C,0.8000*%
%ADD44C,1.5240*%
%ADD45C,1.7000*%
%ADD46O,2.4000X1.8000*%
%ADD47C,1.5000*%
%ADD48R,1.5000X1.5000*%
%ADD49R,1.5000X1.5000*%
%ADD50C,3.0000*%
%ADD51C,2.0000*%
%ADD52C,1.8000*%
%ADD53R,1.8000X1.8000*%
%ADD54C,1.6000*%
%ADD55R,1.6000X1.6000*%
%ADD56R,1.7000X1.7000*%
%ADD57R,1.6000X1.6000*%
%ADD58C,1.6000*%
G04:AMPARAMS|DCode=59|XSize=2.3mm|YSize=1.8mm|CornerRadius=0.225mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD59*
21,1,2.3000,1.3500,0,0,0.0*
21,1,1.8500,1.8000,0,0,0.0*
1,1,0.4500,0.9250,-0.6750*
1,1,0.4500,-0.9250,-0.6750*
1,1,0.4500,-0.9250,0.6750*
1,1,0.4500,0.9250,0.6750*
%
%ADD59ROUNDEDRECTD59*%
G36*
X164097Y490000D02*
X167924Y480761D01*
X133581Y446419D01*
X132139Y444539D01*
X131232Y442350D01*
X130922Y440000D01*
Y403760D01*
X93581Y366419D01*
X92139Y364539D01*
X91232Y362349D01*
X90922Y360000D01*
Y320166D01*
X88190Y317602D01*
X80922Y313286D01*
X80000Y313408D01*
X76737Y312978D01*
X73696Y311719D01*
X71085Y309715D01*
X69081Y307104D01*
X67822Y304063D01*
X67392Y300800D01*
X67822Y297537D01*
X69081Y294496D01*
X71085Y290946D01*
Y285254D01*
X69081Y281704D01*
X67822Y278663D01*
X67392Y275400D01*
X67822Y272137D01*
X69001Y269289D01*
X69081Y269096D01*
X71085Y263368D01*
Y262032D01*
X69081Y256304D01*
X69001Y256110D01*
X67822Y253263D01*
X67392Y250000D01*
X67822Y246737D01*
X69001Y243890D01*
X69081Y243696D01*
X71085Y237968D01*
Y236632D01*
X69081Y230904D01*
X69001Y230711D01*
X67822Y227863D01*
X67392Y224600D01*
X67774Y221700D01*
X67803Y220779D01*
X67500Y211700D01*
X67500Y205831D01*
Y202700D01*
X80000D01*
X92500D01*
Y205831D01*
X92500Y211700D01*
X92197Y220779D01*
X92226Y221700D01*
X92608Y224600D01*
X92178Y227863D01*
X90999Y230711D01*
X90919Y230904D01*
X88915Y236632D01*
Y237968D01*
X90919Y243696D01*
X90999Y243890D01*
X99504Y246871D01*
X102289Y246922D01*
X105950Y244321D01*
X108864Y235075D01*
X107468Y233374D01*
X106075Y230768D01*
X105217Y227941D01*
X104927Y225000D01*
X105217Y222059D01*
X106075Y219232D01*
X107468Y216626D01*
X109342Y214342D01*
X111626Y212468D01*
X114232Y211075D01*
X117059Y210217D01*
X120000Y209927D01*
X122941Y210217D01*
X125768Y211075D01*
X128374Y212468D01*
X130658Y214342D01*
X132532Y216626D01*
X133925Y219232D01*
X134783Y222059D01*
X135073Y225000D01*
X134783Y227941D01*
X133925Y230768D01*
X132532Y233374D01*
X130658Y235658D01*
Y239342D01*
X132532Y241626D01*
X133925Y244232D01*
X134783Y247059D01*
X135073Y250000D01*
X134783Y252941D01*
X133925Y255768D01*
X132532Y258374D01*
X130658Y260658D01*
Y264342D01*
X132532Y266626D01*
X133925Y269232D01*
X134783Y272059D01*
X135073Y275000D01*
X134783Y277941D01*
X133925Y280768D01*
X133814Y280976D01*
X163040Y310203D01*
X171433Y304691D01*
X170289Y300921D01*
X169903Y297000D01*
X170289Y293079D01*
X171433Y289309D01*
X173290Y285835D01*
X175789Y282789D01*
X178835Y280290D01*
X182309Y278433D01*
X186079Y277289D01*
X190000Y276903D01*
X193921Y277289D01*
X197691Y278433D01*
X201165Y280290D01*
X204211Y282789D01*
X206710Y285835D01*
X208567Y289309D01*
X209711Y293079D01*
X210097Y297000D01*
X209711Y300921D01*
X208567Y304691D01*
X206710Y308165D01*
X204211Y311211D01*
X201165Y313710D01*
X197691Y315567D01*
X193921Y316711D01*
X190000Y317097D01*
X186079Y316711D01*
X182309Y315567D01*
X176798Y323960D01*
X251419Y398581D01*
X252861Y400461D01*
X253768Y402650D01*
X254078Y405000D01*
X254078Y405000D01*
Y422710D01*
X255700Y423794D01*
X265700Y418449D01*
Y416500D01*
X275700D01*
Y430000D01*
X282700D01*
Y416500D01*
X292700D01*
Y416500D01*
X302700Y416634D01*
X302990Y416596D01*
X399804Y319781D01*
X401684Y318339D01*
X403873Y317432D01*
X406223Y317122D01*
X406223Y317122D01*
X460219D01*
X464046Y307884D01*
X462081Y305919D01*
X460639Y304039D01*
X459732Y301849D01*
X459422Y299500D01*
Y295947D01*
X458384Y294083D01*
X451000Y287617D01*
X447476Y287153D01*
X444192Y285792D01*
X441372Y283628D01*
X439208Y280808D01*
X437848Y277524D01*
X437384Y274000D01*
X437474Y273312D01*
X343240Y179078D01*
X255051D01*
X254628Y179628D01*
X251808Y181792D01*
X248524Y183153D01*
X245000Y183616D01*
X241476Y183153D01*
X238192Y181792D01*
X235372Y179628D01*
X233208Y176808D01*
X231847Y173524D01*
X231383Y170000D01*
X231847Y166476D01*
X233208Y163192D01*
X235372Y160372D01*
X238192Y158208D01*
X241476Y156847D01*
X245000Y156383D01*
X248524Y156847D01*
X251808Y158208D01*
X254628Y160372D01*
X255051Y160922D01*
X347000D01*
X349350Y161232D01*
X351539Y162139D01*
X353419Y163581D01*
X449422Y259585D01*
X452330Y259219D01*
X458384Y253917D01*
X459422Y252052D01*
Y229017D01*
X458732Y227349D01*
X458422Y225000D01*
Y151500D01*
Y111983D01*
X440579Y94140D01*
X430295Y95964D01*
X427979Y103612D01*
X428256Y104044D01*
X429565Y107206D01*
X430012Y110600D01*
X429565Y113994D01*
X428256Y117156D01*
X426172Y119872D01*
X423456Y121955D01*
X420294Y123265D01*
X416900Y123712D01*
X413506Y123265D01*
X410344Y121955D01*
X407628Y119872D01*
X405751Y117425D01*
X405545Y117156D01*
X405545Y117156D01*
X404235Y113994D01*
X404096Y113873D01*
X394626Y115381D01*
X394100Y117005D01*
Y131500D01*
X374969D01*
X369100Y131500D01*
X360021Y131197D01*
X359100Y131226D01*
X356200Y131608D01*
X352937Y131178D01*
X350089Y129999D01*
X349896Y129919D01*
X344168Y127915D01*
X342832D01*
X337104Y129919D01*
X336911Y129999D01*
X334063Y131178D01*
X330800Y131608D01*
X327537Y131178D01*
X324689Y129999D01*
X324496Y129919D01*
X318768Y127915D01*
X317432D01*
X311704Y129919D01*
X311511Y129999D01*
X308663Y131178D01*
X305400Y131608D01*
X302137Y131178D01*
X299289Y129999D01*
X299096Y129919D01*
X293368Y127915D01*
X292032D01*
X286304Y129919D01*
X286110Y129999D01*
X283263Y131178D01*
X280000Y131608D01*
X276737Y131178D01*
X273890Y129999D01*
X273696Y129919D01*
X267968Y127915D01*
X266632D01*
X260904Y129919D01*
X260711Y129999D01*
X257863Y131178D01*
X254600Y131608D01*
X251337Y131178D01*
X248296Y129919D01*
X245685Y127915D01*
X243681Y125304D01*
X242422Y122263D01*
X241992Y119000D01*
X242422Y115737D01*
X243681Y112696D01*
X245685Y110085D01*
X248296Y108081D01*
X251337Y106822D01*
X254600Y106392D01*
X257863Y106822D01*
X260711Y108001D01*
X260904Y108081D01*
X266632Y110085D01*
X267968D01*
X273696Y108081D01*
X273890Y108001D01*
X276737Y106822D01*
X280000Y106392D01*
X283263Y106822D01*
X286110Y108001D01*
X286304Y108081D01*
X292032Y110085D01*
X293368D01*
X299096Y108081D01*
X299289Y108001D01*
X302137Y106822D01*
X305400Y106392D01*
X308663Y106822D01*
X311511Y108001D01*
X311704Y108081D01*
X317432Y110085D01*
X318768D01*
X324496Y108081D01*
X324689Y108001D01*
X327537Y106822D01*
X330800Y106392D01*
X334063Y106822D01*
X336911Y108001D01*
X337104Y108081D01*
X342832Y110085D01*
X344168D01*
X349896Y108081D01*
X350089Y108001D01*
X352937Y106822D01*
X356200Y106392D01*
X359100Y106774D01*
X360021Y106803D01*
X369100Y106500D01*
X374969Y106500D01*
X387162Y106500D01*
X394100Y106500D01*
X401250Y101782D01*
X400661Y93062D01*
X398781Y91619D01*
X388581Y81419D01*
X387138Y79539D01*
X386232Y77350D01*
X385922Y75000D01*
Y20000D01*
X380924Y11588D01*
X380250Y10817D01*
X379037Y10000D01*
X78018D01*
X70541Y18662D01*
X70270Y20000D01*
X70598Y25000D01*
X70459Y27122D01*
X70599Y27572D01*
X74176Y32213D01*
X76301Y34210D01*
X76500Y34316D01*
Y50000D01*
Y64055D01*
X73345Y63640D01*
X69940Y62229D01*
X67015Y59985D01*
X64164Y59185D01*
X57318Y58759D01*
X54880Y59314D01*
X52758Y61175D01*
X47799Y64489D01*
X42449Y67127D01*
X36802Y69044D01*
X30952Y70208D01*
X25000Y70598D01*
X20000Y70270D01*
X18662Y70541D01*
X10000Y78018D01*
X10000Y421982D01*
X18662Y429459D01*
X20000Y429730D01*
X25000Y429402D01*
X30952Y429793D01*
X36802Y430956D01*
X42449Y432873D01*
X47799Y435511D01*
X52758Y438825D01*
X54880Y440686D01*
X57318Y441241D01*
X64164Y440815D01*
X67015Y440015D01*
X69940Y437771D01*
X73345Y436360D01*
X77000Y435879D01*
X83000D01*
X86655Y436360D01*
X90060Y437771D01*
X92985Y440015D01*
X95229Y442940D01*
X96640Y446345D01*
X97121Y450000D01*
X96640Y453655D01*
X95229Y457060D01*
X92985Y459985D01*
X90060Y462229D01*
X86655Y463640D01*
X83000Y464121D01*
X79423D01*
X76301Y465790D01*
X74176Y467786D01*
X70599Y472428D01*
X70459Y472878D01*
X70598Y475000D01*
X70270Y480000D01*
X70541Y481338D01*
X78018Y490000D01*
X164097D01*
D02*
G37*
G36*
X411300Y477685D02*
Y451685D01*
X411300D01*
X411502Y441685D01*
X411188Y439300D01*
X411635Y435906D01*
X412944Y432744D01*
X415028Y429492D01*
Y423707D01*
X412944Y420456D01*
X411635Y417294D01*
X411188Y413900D01*
X411635Y410506D01*
X412944Y407344D01*
X415028Y404092D01*
Y398307D01*
X413883Y396520D01*
X403618Y394286D01*
X397078Y399210D01*
Y431000D01*
X396768Y433349D01*
X395862Y435539D01*
X394419Y437419D01*
X374419Y457419D01*
X372539Y458862D01*
X370349Y459768D01*
X368000Y460078D01*
X261000D01*
X258650Y459768D01*
X256461Y458862D01*
X254581Y457419D01*
X238581Y441419D01*
X237139Y439539D01*
X236232Y437350D01*
X235922Y435000D01*
Y411411D01*
X228717Y404247D01*
X219362Y406739D01*
X219229Y407060D01*
X216985Y409985D01*
X214060Y412229D01*
X210655Y413640D01*
X207500Y414055D01*
Y400000D01*
X204000D01*
Y396500D01*
X187340D01*
X187360Y396345D01*
X188771Y392940D01*
X191015Y390015D01*
X193940Y387771D01*
X197345Y386360D01*
X199144Y386124D01*
X201909Y381424D01*
X203041Y375879D01*
X143178Y316016D01*
X135139Y319366D01*
X133547Y320527D01*
X133153Y323524D01*
X131792Y326808D01*
X131437Y327271D01*
X129628Y330568D01*
Y336932D01*
X131437Y340229D01*
X131792Y340692D01*
X133153Y343976D01*
X133616Y347500D01*
X133153Y351024D01*
X131792Y354308D01*
X129628Y357128D01*
X126808Y359292D01*
X126429Y359449D01*
X123556Y367558D01*
X123570Y370733D01*
X146419Y393581D01*
X147861Y395461D01*
X148768Y397650D01*
X149078Y400000D01*
Y436240D01*
X191260Y478422D01*
X401606D01*
X411300Y477685D01*
D02*
G37*
G36*
X484344Y476097D02*
X487971Y468422D01*
X487835Y468093D01*
X487388Y464700D01*
X487835Y461306D01*
X489145Y458144D01*
X491228Y454892D01*
Y449107D01*
X489145Y445856D01*
X487835Y442693D01*
X487388Y439300D01*
X487835Y435906D01*
X489145Y432744D01*
X491228Y429492D01*
Y423707D01*
X489145Y420456D01*
X487835Y417294D01*
X487388Y413900D01*
X487835Y410506D01*
X489145Y407344D01*
X491228Y404092D01*
Y398307D01*
X489145Y395056D01*
X487835Y391894D01*
X487388Y388500D01*
X487835Y385106D01*
X489145Y381944D01*
X491228Y379228D01*
X491566Y378969D01*
X493557Y370432D01*
X493335Y366596D01*
X485817Y359078D01*
X435760D01*
X428927Y365910D01*
X428642Y368208D01*
X430774Y376812D01*
X431410Y377570D01*
X433572Y379228D01*
X435655Y381944D01*
X436921Y385000D01*
X424300D01*
Y392000D01*
X436921D01*
X435655Y395056D01*
X433572Y398307D01*
Y404092D01*
X435655Y407344D01*
X436965Y410506D01*
X437412Y413900D01*
X436965Y417294D01*
X435655Y420456D01*
X433572Y423707D01*
Y429492D01*
X435655Y432744D01*
X436965Y435906D01*
X437412Y439300D01*
X437098Y441685D01*
X437300Y451685D01*
X437300Y451685D01*
Y477685D01*
X446994Y478422D01*
X482039D01*
X484344Y476097D01*
D02*
G37*
G36*
X688391Y490000D02*
X689849Y480000D01*
X688841Y478646D01*
X680904Y473792D01*
X680500Y473763D01*
Y460000D01*
Y446237D01*
X680904Y446208D01*
X688841Y441354D01*
X690000Y439798D01*
Y404002D01*
X688841Y402446D01*
X680904Y397592D01*
X680500Y397562D01*
Y383800D01*
Y370037D01*
X680904Y370008D01*
X688841Y365154D01*
X690000Y363598D01*
Y347455D01*
X687030Y344417D01*
X680000Y340176D01*
X678900Y340321D01*
X675245Y339840D01*
X671840Y338429D01*
X668915Y336185D01*
X663485D01*
X660560Y338429D01*
X657155Y339840D01*
X654671Y340167D01*
X640000Y354838D01*
Y366000D01*
X623226D01*
X614800Y369800D01*
Y380300D01*
X600800D01*
Y387300D01*
X614800D01*
Y397800D01*
X614800Y397800D01*
X614750Y405700D01*
X600800D01*
Y412700D01*
X614460D01*
X614440Y412855D01*
X613029Y416260D01*
X610785Y419185D01*
Y424615D01*
X613029Y427540D01*
X614440Y430945D01*
X614921Y434600D01*
X614440Y438255D01*
X613029Y441660D01*
X610785Y444585D01*
Y450015D01*
X613029Y452940D01*
X614440Y456345D01*
X614921Y460000D01*
X614440Y463655D01*
X613029Y467060D01*
X610785Y469985D01*
X607860Y472229D01*
X604455Y473640D01*
X600800Y474121D01*
X597145Y473640D01*
X596475Y473362D01*
X589076Y480761D01*
X592903Y490000D01*
X688391D01*
D02*
G37*
G36*
X671840Y161571D02*
X675245Y160160D01*
X678900Y159679D01*
X680000Y159824D01*
X687030Y155583D01*
X690000Y152545D01*
Y136402D01*
X688841Y134846D01*
X680904Y129992D01*
X680500Y129963D01*
Y116200D01*
Y102437D01*
X680904Y102408D01*
X688841Y97554D01*
X690000Y95998D01*
Y60202D01*
X688841Y58646D01*
X680904Y53792D01*
X680500Y53762D01*
Y40000D01*
Y26237D01*
X680904Y26208D01*
X688841Y21354D01*
X689849Y20000D01*
X688391Y10000D01*
X590472D01*
X587271Y19010D01*
X593995Y26000D01*
X614800D01*
Y37422D01*
X618500D01*
X620849Y37732D01*
X623039Y38639D01*
X624919Y40081D01*
X625838Y41000D01*
X637000D01*
Y59000D01*
Y81000D01*
X625838D01*
X614751Y92086D01*
X614440Y94455D01*
X613029Y97860D01*
X610785Y100785D01*
Y106215D01*
X613029Y109140D01*
X614440Y112545D01*
X614921Y116200D01*
X614440Y119855D01*
X613029Y123260D01*
X610785Y126185D01*
X607860Y128429D01*
X604455Y129840D01*
X600800Y130321D01*
X597145Y129840D01*
X593740Y128429D01*
X590815Y126185D01*
X590119Y125278D01*
X555060D01*
X530251Y150087D01*
X530221Y153207D01*
X532930Y160900D01*
X542233Y163571D01*
X544840Y161571D01*
X548245Y160160D01*
X551900Y159679D01*
X555555Y160160D01*
X558960Y161571D01*
X561885Y163815D01*
X567315D01*
X570240Y161571D01*
X573645Y160160D01*
X577300Y159679D01*
X580955Y160160D01*
X584360Y161571D01*
X587285Y163815D01*
X592715D01*
X595640Y161571D01*
X599045Y160160D01*
X602700Y159679D01*
X606355Y160160D01*
X609760Y161571D01*
X612685Y163815D01*
X618115D01*
X621040Y161571D01*
X624445Y160160D01*
X628100Y159679D01*
X631755Y160160D01*
X635160Y161571D01*
X638085Y163815D01*
X643515D01*
X646440Y161571D01*
X649845Y160160D01*
X653500Y159679D01*
X657155Y160160D01*
X660560Y161571D01*
X663485Y163815D01*
X668915D01*
X671840Y161571D01*
D02*
G37*
G36*
X528146Y99016D02*
X528372Y97958D01*
X528270Y95509D01*
X527125Y88971D01*
X526120Y87198D01*
X525977Y87043D01*
X520581Y81647D01*
X519138Y79767D01*
X518232Y77577D01*
X518090Y76500D01*
X514000D01*
Y76500D01*
X507668Y77098D01*
X505281Y80637D01*
X505721Y81700D01*
X493100D01*
X480479D01*
X481745Y78644D01*
X477582Y69405D01*
X477173Y68978D01*
X465000D01*
X462650Y68668D01*
X461919Y68365D01*
X456073Y69816D01*
X452700Y80586D01*
X468694Y96579D01*
X480087Y94622D01*
X481698Y91837D01*
X481629Y91477D01*
X480479Y88700D01*
X493100D01*
X505721D01*
X504455Y91756D01*
X502372Y95007D01*
Y100793D01*
X504455Y104044D01*
X505765Y107206D01*
X505771Y107249D01*
X514258Y111112D01*
X515943Y111219D01*
X528146Y99016D01*
D02*
G37*
%LPC*%
G36*
X83500Y414055D02*
Y403500D01*
X96660D01*
X96640Y403655D01*
X95229Y407060D01*
X92985Y409985D01*
X90060Y412229D01*
X86655Y413640D01*
X83500Y414055D01*
D02*
G37*
G36*
X76500Y414055D02*
X73345Y413640D01*
X69940Y412229D01*
X67015Y409985D01*
X64771Y407060D01*
X63360Y403655D01*
X63340Y403500D01*
X76500D01*
Y414055D01*
D02*
G37*
G36*
X96660Y396500D02*
X83500D01*
Y385945D01*
X86655Y386360D01*
X90060Y387771D01*
X92985Y390015D01*
X95229Y392940D01*
X96640Y396345D01*
X96660Y396500D01*
D02*
G37*
G36*
X76500D02*
X63340D01*
X63360Y396345D01*
X64771Y392940D01*
X67015Y390015D01*
X69940Y387771D01*
X73345Y386360D01*
X76500Y385945D01*
Y396500D01*
D02*
G37*
G36*
X92500Y195700D02*
X83500D01*
Y186700D01*
X92500D01*
Y195700D01*
D02*
G37*
G36*
X76500D02*
X67500D01*
Y186700D01*
X76500D01*
Y195700D01*
D02*
G37*
G36*
X190000Y223097D02*
X186079Y222711D01*
X182309Y221567D01*
X178835Y219710D01*
X175789Y217211D01*
X173290Y214165D01*
X171433Y210691D01*
X170289Y206921D01*
X169903Y203000D01*
X170289Y199079D01*
X171433Y195309D01*
X173290Y191835D01*
X175789Y188789D01*
X178835Y186290D01*
X182309Y184433D01*
X186079Y183289D01*
X190000Y182903D01*
X193921Y183289D01*
X197691Y184433D01*
X201165Y186290D01*
X204211Y188789D01*
X206710Y191835D01*
X208567Y195309D01*
X209711Y199079D01*
X210097Y203000D01*
X209711Y206921D01*
X208567Y210691D01*
X206710Y214165D01*
X204211Y217211D01*
X201165Y219710D01*
X197691Y221567D01*
X193921Y222711D01*
X190000Y223097D01*
D02*
G37*
G36*
X83000Y114121D02*
X77000D01*
X73345Y113640D01*
X69940Y112229D01*
X67015Y109985D01*
X64771Y107060D01*
X63360Y103655D01*
X62879Y100000D01*
X63360Y96345D01*
X64771Y92940D01*
X67015Y90015D01*
X69940Y87771D01*
X73345Y86360D01*
X77000Y85879D01*
X83000D01*
X86655Y86360D01*
X90060Y87771D01*
X92985Y90015D01*
X95229Y92940D01*
X96640Y96345D01*
X97121Y100000D01*
X96640Y103655D01*
X95229Y107060D01*
X92985Y109985D01*
X90060Y112229D01*
X86655Y113640D01*
X83000Y114121D01*
D02*
G37*
G36*
X340000Y75000D02*
X330000D01*
Y66000D01*
X340000D01*
Y75000D01*
D02*
G37*
G36*
X207500Y64055D02*
Y53500D01*
X220660D01*
X220640Y53655D01*
X219229Y57060D01*
X216985Y59985D01*
X214060Y62229D01*
X210655Y63640D01*
X207500Y64055D01*
D02*
G37*
G36*
X83500D02*
Y53500D01*
X96660D01*
X96640Y53655D01*
X95229Y57060D01*
X92985Y59985D01*
X90060Y62229D01*
X86655Y63640D01*
X83500Y64055D01*
D02*
G37*
G36*
X200500D02*
X197345Y63640D01*
X193940Y62229D01*
X191015Y59985D01*
X188771Y57060D01*
X187360Y53655D01*
X187340Y53500D01*
X200500D01*
Y64055D01*
D02*
G37*
G36*
X220660Y46500D02*
X207500D01*
Y35945D01*
X210655Y36360D01*
X214060Y37771D01*
X216985Y40015D01*
X219229Y42940D01*
X220640Y46345D01*
X220660Y46500D01*
D02*
G37*
G36*
X96660D02*
X83500D01*
Y35945D01*
X86655Y36360D01*
X90060Y37771D01*
X92985Y40015D01*
X95229Y42940D01*
X96640Y46345D01*
X96660Y46500D01*
D02*
G37*
G36*
X200500D02*
X187340D01*
X187360Y46345D01*
X188771Y42940D01*
X191015Y40015D01*
X193940Y37771D01*
X197345Y36360D01*
X200500Y35945D01*
Y46500D01*
D02*
G37*
G36*
X207000Y114121D02*
X201000D01*
X197345Y113640D01*
X193940Y112229D01*
X191015Y109985D01*
X188771Y107060D01*
X187360Y103655D01*
X186879Y100000D01*
X187360Y96345D01*
X188771Y92940D01*
X191015Y90015D01*
X193940Y87771D01*
X197345Y86360D01*
X201000Y85879D01*
X207000D01*
X210655Y86360D01*
X212609Y87170D01*
X216265Y85727D01*
X221499Y80874D01*
X221384Y80000D01*
X221847Y76476D01*
X223208Y73192D01*
X225372Y70372D01*
X226553Y69465D01*
X227139Y68051D01*
X228581Y66171D01*
X249671Y45081D01*
X251433Y43729D01*
X253437Y41725D01*
Y33750D01*
X253687Y31857D01*
X254417Y30094D01*
X255579Y28579D01*
X257094Y27417D01*
X258857Y26687D01*
X260750Y26437D01*
X279250D01*
X281143Y26687D01*
X282906Y27417D01*
X284421Y28579D01*
X285583Y30094D01*
X285926Y30922D01*
X295000D01*
X297349Y31232D01*
X299539Y32139D01*
X301419Y33581D01*
X302838Y35000D01*
X315000Y35000D01*
Y35000D01*
X315000D01*
Y35000D01*
X340000D01*
Y52000D01*
Y61000D01*
X327500D01*
Y63500D01*
X325000D01*
Y75000D01*
X325000D01*
X315000Y75000D01*
Y75000D01*
X315000D01*
Y75000D01*
X305000D01*
Y63500D01*
X300000D01*
Y75000D01*
X290000D01*
X284421Y81421D01*
X282906Y82583D01*
X281143Y83313D01*
X279250Y83562D01*
X272500D01*
Y69500D01*
X267500D01*
Y83562D01*
X260750D01*
X258857Y83313D01*
X258297Y83081D01*
X254986Y83226D01*
X249883Y84782D01*
X246903Y86541D01*
X246792Y86808D01*
X244628Y89628D01*
X241808Y91792D01*
X238524Y93153D01*
X235000Y93616D01*
X231476Y93153D01*
X229865Y92485D01*
X225703Y94227D01*
X220970Y98856D01*
X221121Y100000D01*
X220640Y103655D01*
X219229Y107060D01*
X216985Y109985D01*
X214060Y112229D01*
X210655Y113640D01*
X207000Y114121D01*
D02*
G37*
G36*
Y464121D02*
X201000D01*
X197345Y463640D01*
X193940Y462229D01*
X191015Y459985D01*
X188771Y457060D01*
X187360Y453655D01*
X186879Y450000D01*
X187360Y446345D01*
X188771Y442940D01*
X191015Y440015D01*
X193940Y437771D01*
X197345Y436360D01*
X201000Y435879D01*
X207000D01*
X210655Y436360D01*
X214060Y437771D01*
X216985Y440015D01*
X219229Y442940D01*
X220640Y446345D01*
X221121Y450000D01*
X220640Y453655D01*
X219229Y457060D01*
X216985Y459985D01*
X214060Y462229D01*
X210655Y463640D01*
X207000Y464121D01*
D02*
G37*
G36*
X200500Y414055D02*
X197345Y413640D01*
X193940Y412229D01*
X191015Y409985D01*
X188771Y407060D01*
X187360Y403655D01*
X187340Y403500D01*
X200500D01*
Y414055D01*
D02*
G37*
G36*
X673500Y473660D02*
X673345Y473640D01*
X669940Y472229D01*
X667015Y469985D01*
X664771Y467060D01*
X663360Y463655D01*
X663340Y463500D01*
X673500D01*
Y473660D01*
D02*
G37*
G36*
Y456500D02*
X663340D01*
X663360Y456345D01*
X664771Y452940D01*
X667015Y450015D01*
X669940Y447771D01*
X673345Y446360D01*
X673500Y446340D01*
Y456500D01*
D02*
G37*
G36*
Y397460D02*
X673345Y397440D01*
X669940Y396029D01*
X667015Y393785D01*
X664771Y390860D01*
X663360Y387455D01*
X663340Y387300D01*
X673500D01*
Y397460D01*
D02*
G37*
G36*
Y380300D02*
X663340D01*
X663360Y380145D01*
X664771Y376740D01*
X667015Y373815D01*
X669940Y371571D01*
X673345Y370160D01*
X673500Y370140D01*
Y380300D01*
D02*
G37*
G36*
X673500Y129860D02*
X673345Y129840D01*
X669940Y128429D01*
X667015Y126185D01*
X664771Y123260D01*
X663360Y119855D01*
X663340Y119700D01*
X673500D01*
Y129860D01*
D02*
G37*
G36*
Y112700D02*
X663340D01*
X663360Y112545D01*
X664771Y109140D01*
X667015Y106215D01*
X669940Y103971D01*
X673345Y102560D01*
X673500Y102540D01*
Y112700D01*
D02*
G37*
G36*
X673500Y53660D02*
X673345Y53640D01*
X669940Y52229D01*
X667015Y49985D01*
X664771Y47060D01*
X663360Y43655D01*
X663340Y43500D01*
X673500D01*
Y53660D01*
D02*
G37*
G36*
Y36500D02*
X663340D01*
X663360Y36345D01*
X664771Y32940D01*
X667015Y30015D01*
X669940Y27771D01*
X673345Y26360D01*
X673500Y26340D01*
Y36500D01*
D02*
G37*
%LPD*%
D19*
X537000Y435000D02*
D03*
X555000D02*
D03*
X537000Y470000D02*
D03*
X555000D02*
D03*
X549000Y97000D02*
D03*
X567000D02*
D03*
X517000Y256000D02*
D03*
X499000D02*
D03*
X537000Y256000D02*
D03*
X555000D02*
D03*
X611000Y354000D02*
D03*
X629000D02*
D03*
X447500Y35000D02*
D03*
X465500D02*
D03*
D20*
X555000Y380000D02*
D03*
X572000D02*
D03*
X555000Y405000D02*
D03*
X572000D02*
D03*
X542500Y64000D02*
D03*
X525500D02*
D03*
X465000Y55000D02*
D03*
X448000D02*
D03*
D21*
X327500Y63500D02*
D03*
Y46500D02*
D03*
X302500Y63500D02*
D03*
Y46500D02*
D03*
D22*
X625000Y52000D02*
D03*
Y70000D02*
D03*
D43*
X535437Y470750D02*
X537000Y469187D01*
X546000Y94000D02*
X550000D01*
X507500Y132500D02*
X546000Y94000D01*
X500000Y255000D02*
Y285000D01*
X499000Y252000D02*
X501000Y254000D01*
X235000Y72590D02*
X256090Y51500D01*
X235000Y72590D02*
Y80000D01*
X256090Y51500D02*
X256500D01*
X267500Y40500D01*
X270000D01*
X270500Y40000D02*
X295000D01*
X270000Y40500D02*
X270500Y40000D01*
X295000D02*
X301500Y46500D01*
X302500D01*
X327500D01*
X245000Y170000D02*
X347000D01*
X451000Y274000D01*
X467500Y225000D02*
X468500Y226000D01*
X467500Y151500D02*
Y225000D01*
X468500Y226000D02*
Y299500D01*
X571000Y405000D02*
X572000Y404000D01*
X100000Y360000D02*
X140000Y400000D01*
X100000Y268130D02*
Y360000D01*
Y268130D02*
X118130Y250000D01*
X120000D01*
Y225000D02*
Y250000D01*
X593800Y460000D02*
Y463200D01*
X574999Y198000D02*
Y247999D01*
X663000Y305000D02*
X678900Y320900D01*
X618000Y305000D02*
X663000D01*
X575000Y262000D02*
X618000Y305000D01*
X575000Y248000D02*
Y262000D01*
X140000Y400000D02*
Y440000D01*
X611000Y354000D02*
Y359000D01*
X600000Y370000D02*
X611000Y359000D01*
X600000Y370000D02*
Y381000D01*
X586000Y356000D02*
X600000Y370000D01*
X554000Y356000D02*
X586000D01*
X526500Y328500D02*
X554000Y356000D01*
X569500Y487500D02*
X593800Y463200D01*
X187500Y487500D02*
X569500D01*
X499000Y386000D02*
X502000Y389000D01*
X561400Y467000D02*
X593800Y434600D01*
X557000Y467000D02*
X561400D01*
X588200Y409200D02*
X600800D01*
X584000Y405000D02*
X588200Y409200D01*
X572000Y405000D02*
X584000D01*
X542500Y63000D02*
X566000D01*
X593800Y90800D01*
X587913Y62913D02*
X591313D01*
X572500Y47500D02*
X587913Y62913D01*
X532272Y47500D02*
X572500D01*
X579800Y26000D02*
X597300Y43500D01*
X624000Y52000D02*
X625000D01*
X618500Y46500D02*
X624000Y52000D01*
X607300Y46500D02*
X618500D01*
X600800Y40000D02*
X607300Y46500D01*
X624000Y70000D02*
X625000D01*
X603200Y90800D02*
X624000Y70000D01*
X600800Y90800D02*
X603200D01*
X596287Y88313D02*
X600687D01*
X591900Y381900D02*
X592000Y382000D01*
X526500Y326200D02*
Y328500D01*
X495200Y326200D02*
X501100D01*
X577300Y331144D02*
Y331200D01*
X555000Y271000D02*
X580000Y296000D01*
X555000Y256000D02*
Y271000D01*
X611000Y354000D02*
X613000Y356000D01*
X573900Y381900D02*
X591900D01*
X572000Y380000D02*
X573900Y381900D01*
X629000Y353000D02*
Y354000D01*
Y353000D02*
X653500Y328500D01*
Y326200D02*
Y328500D01*
X527000Y388000D02*
Y425000D01*
X526577Y387000D02*
X528000D01*
X432000Y350000D02*
X489577D01*
X527000Y425000D02*
X537000Y435000D01*
X527000Y388000D02*
X528000Y387000D01*
X535617Y432383D02*
X535999Y432000D01*
X489577Y350000D02*
X526577Y387000D01*
X481500Y291500D02*
X495000Y305000D01*
X500000Y255000D02*
X501000Y254000D01*
X481500Y165823D02*
Y291500D01*
X495000Y305000D02*
X558277D01*
X468500Y299500D02*
X495200Y326200D01*
X499000Y252000D02*
X499000Y252000D01*
X543999Y188217D02*
Y231999D01*
X542500Y186718D02*
X543999Y188217D01*
X542500Y186718D02*
X551900Y177318D01*
X368000Y451000D02*
X388000Y431000D01*
X261000Y451000D02*
X368000D01*
X245000Y435000D02*
X261000Y451000D01*
X388000Y394000D02*
Y431000D01*
Y394000D02*
X432000Y350000D01*
X525000Y175000D02*
X526500Y176500D01*
X520000Y219563D02*
Y224000D01*
Y219563D02*
X526500Y213063D01*
X500499Y174401D02*
X501100Y173800D01*
X500499Y174401D02*
Y231248D01*
X515000Y245749D01*
Y254000D01*
X517000Y256000D01*
X526500Y176500D02*
Y213063D01*
X551900Y173800D02*
Y177318D01*
X537000Y256000D02*
X537000Y256000D01*
X517000Y256000D02*
X537000D01*
X497323Y150000D02*
X517500D01*
X551300Y116200D01*
X481500Y165823D02*
X497323Y150000D01*
X551300Y116200D02*
X593800D01*
X571000Y405000D02*
X572000D01*
Y380000D02*
Y404000D01*
X555000Y379000D02*
Y380000D01*
X552500Y376500D02*
X555000Y379000D01*
X548415Y376500D02*
X552500D01*
X501100Y329185D02*
X548415Y376500D01*
X501100Y326200D02*
Y329185D01*
X140000Y440000D02*
X187500Y487500D01*
X245000Y405000D02*
Y435000D01*
X120000Y280000D02*
X245000Y405000D01*
X120000Y275000D02*
Y280000D01*
X555000Y469000D02*
Y470000D01*
Y469000D02*
X557000Y467000D01*
X406223Y326200D02*
X495200D01*
X304600Y427823D02*
X406223Y326200D01*
X304600Y427823D02*
Y430000D01*
X555000Y405000D02*
Y435000D01*
X506550Y470750D02*
X535437D01*
X500500Y464700D02*
X506550Y470750D01*
X537000Y469187D02*
Y470000D01*
Y460728D02*
Y469187D01*
Y460728D02*
X553000Y444728D01*
Y437000D02*
Y444728D01*
Y437000D02*
X555000Y435000D01*
X554000Y384000D02*
Y405000D01*
Y405000D02*
X554000Y405000D01*
X554000Y405000D02*
X554000Y405000D01*
X465000Y30000D02*
Y55000D01*
X448000Y35000D02*
Y55000D01*
X467500Y108223D02*
Y151500D01*
X419077Y59800D02*
X467500Y108223D01*
X416900Y59800D02*
X419077D01*
X432900Y14900D02*
X447000Y29000D01*
X400100Y14900D02*
X432900D01*
X395000Y20000D02*
X400100Y14900D01*
X395000Y20000D02*
Y75000D01*
X405200Y85200D01*
X416900D01*
X447000Y29000D02*
Y30000D01*
X448000Y31000D01*
Y35000D01*
X465000Y59900D02*
X493000D01*
X495587Y57313D01*
X467500Y151500D02*
X486500Y132500D01*
X574999Y247999D02*
X575000Y248000D01*
X678900Y320900D02*
Y326200D01*
X504075Y57313D02*
X535387Y26000D01*
X579800D01*
X527000Y52772D02*
X532272Y47500D01*
X527000Y52772D02*
Y62500D01*
X525500Y64000D02*
X527000Y62500D01*
X495587Y57313D02*
X504075D01*
X567000Y96000D02*
Y97000D01*
X564000Y93000D02*
X567000Y96000D01*
X564000Y86272D02*
Y93000D01*
X558478Y80750D02*
X564000Y86272D01*
X532522Y80750D02*
X558478D01*
X527000Y75228D02*
X532522Y80750D01*
X527000Y65500D02*
Y75228D01*
X525500Y64000D02*
X527000Y65500D01*
X593800Y90800D02*
X596287Y88313D01*
X591313Y62913D02*
X593800Y65400D01*
X486500Y132500D02*
X507500D01*
X500500Y388500D02*
X501000Y389000D01*
X499000Y386000D02*
X499000D01*
X502000Y389000D02*
X506000D01*
X558277Y305000D02*
X577300Y324023D01*
Y326200D01*
X571000Y405000D02*
X571000Y405000D01*
X501000Y389000D02*
X502000D01*
D44*
X650000Y250000D02*
D03*
X25000Y475000D02*
D03*
Y25000D02*
D03*
D45*
X120000Y347500D02*
D03*
Y320000D02*
D03*
X355400Y430000D02*
D03*
X330000D02*
D03*
X304600D02*
D03*
X587000Y299000D02*
D03*
X235000Y80000D02*
D03*
X245000Y170000D02*
D03*
X574999Y198000D02*
D03*
X528000Y387000D02*
D03*
X500000Y285000D02*
D03*
X543999Y231999D02*
D03*
X451000Y274000D02*
D03*
X520000Y224000D02*
D03*
D46*
X80000Y450000D02*
D03*
X204000D02*
D03*
X80000Y400000D02*
D03*
X204000D02*
D03*
X80000Y100000D02*
D03*
X204000D02*
D03*
X80000Y50000D02*
D03*
X204000D02*
D03*
D47*
X80000Y300800D02*
D03*
Y275400D02*
D03*
Y250000D02*
D03*
Y224600D02*
D03*
X254600Y119000D02*
D03*
X356200D02*
D03*
X330800D02*
D03*
X305400D02*
D03*
X280000D02*
D03*
D48*
X80000Y199200D02*
D03*
D49*
X381600Y119000D02*
D03*
D50*
X190000Y203000D02*
D03*
Y297000D02*
D03*
D51*
X120000Y225000D02*
D03*
Y250000D02*
D03*
Y275000D02*
D03*
D52*
X677000Y383800D02*
D03*
Y460000D02*
D03*
X600800D02*
D03*
Y434600D02*
D03*
Y409200D02*
D03*
X677000Y40000D02*
D03*
Y116200D02*
D03*
X600800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
D53*
X600800Y383800D02*
D03*
Y40000D02*
D03*
D54*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
D55*
Y34400D02*
D03*
D56*
X279200Y430000D02*
D03*
D57*
X424300Y464684D02*
D03*
D58*
Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
D59*
X270000Y69500D02*
D03*
Y40500D02*
D03*
M02*

View File

@@ -0,0 +1,456 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=32896*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD11C,0.2540*%
%ADD12C,0.2000*%
%ADD14C,0.1000*%
%ADD61C,0.1270*%
D11*
X269843Y100196D02*
X272383Y102735D01*
X277461D01*
X280000Y100196D01*
Y90039D01*
X277461Y87500D01*
X272383D01*
X269843Y90039D01*
X264765Y87500D02*
X259687D01*
X262226D01*
Y102735D01*
X264765Y100196D01*
X679000Y347000D02*
Y362235D01*
X671383D01*
X668843Y359696D01*
Y354618D01*
X671383Y352078D01*
X679000D01*
X673922D02*
X668843Y347000D01*
X663765D02*
X658687D01*
X661226D01*
Y362235D01*
X663765Y359696D01*
X651069D02*
X648530Y362235D01*
X643452D01*
X640912Y359696D01*
Y349539D01*
X643452Y347000D01*
X648530D01*
X651069Y349539D01*
Y359696D01*
X567000Y274000D02*
Y289235D01*
X559383D01*
X556843Y286696D01*
Y281618D01*
X559383Y279078D01*
X567000D01*
X561922D02*
X556843Y274000D01*
X551765Y276539D02*
X549226Y274000D01*
X544147D01*
X541608Y276539D01*
Y286696D01*
X544147Y289235D01*
X549226D01*
X551765Y286696D01*
Y284157D01*
X549226Y281618D01*
X541608D01*
X534000Y274000D02*
Y289235D01*
X526382D01*
X523843Y286696D01*
Y281618D01*
X526382Y279078D01*
X534000D01*
X528922D02*
X523843Y274000D01*
X518765Y286696D02*
X516226Y289235D01*
X511147D01*
X508608Y286696D01*
Y284157D01*
X511147Y281618D01*
X508608Y279078D01*
Y276539D01*
X511147Y274000D01*
X516226D01*
X518765Y276539D01*
Y279078D01*
X516226Y281618D01*
X518765Y284157D01*
Y286696D01*
X516226Y281618D02*
X511147D01*
X569843Y68696D02*
X572383Y71235D01*
X577461D01*
X580000Y68696D01*
Y58539D01*
X577461Y56000D01*
X572383D01*
X569843Y58539D01*
X564765Y68696D02*
X562226Y71235D01*
X557147D01*
X554608Y68696D01*
Y66157D01*
X557147Y63618D01*
X554608Y61078D01*
Y58539D01*
X557147Y56000D01*
X562226D01*
X564765Y58539D01*
Y61078D01*
X562226Y63618D01*
X564765Y66157D01*
Y68696D01*
X562226Y63618D02*
X557147D01*
X648000Y65696D02*
X645461Y68235D01*
X640383D01*
X637843Y65696D01*
Y55539D01*
X640383Y53000D01*
X645461D01*
X648000Y55539D01*
Y65696D01*
X469000Y7500D02*
Y22735D01*
X461382D01*
X458843Y20196D01*
Y15117D01*
X461382Y12578D01*
X469000D01*
X463922D02*
X458843Y7500D01*
X443608Y22735D02*
X453765D01*
Y15117D01*
X448687D01*
X453765D01*
Y7500D01*
X456343Y80196D02*
X458882Y82735D01*
X463961D01*
X466500Y80196D01*
Y70039D01*
X463961Y67500D01*
X458882D01*
X456343Y70039D01*
X441108Y82735D02*
X451265D01*
Y75118D01*
X446187D01*
X451265D01*
Y67500D01*
X535500Y89000D02*
Y104235D01*
X527882D01*
X525343Y101696D01*
Y96618D01*
X527882Y94078D01*
X535500D01*
X530422D02*
X525343Y89000D01*
X520265Y101696D02*
X517726Y104235D01*
X512647D01*
X510108Y101696D01*
Y99157D01*
X512647Y96618D01*
X515187D01*
X512647D01*
X510108Y94078D01*
Y91539D01*
X512647Y89000D01*
X517726D01*
X520265Y91539D01*
X529843Y412696D02*
X532383Y415235D01*
X537461D01*
X540000Y412696D01*
Y402539D01*
X537461Y400000D01*
X532383D01*
X529843Y402539D01*
X514608Y415235D02*
X524765D01*
Y407617D01*
X519687Y410157D01*
X517147D01*
X514608Y407617D01*
Y402539D01*
X517147Y400000D01*
X522226D01*
X524765Y402539D01*
X529843Y387696D02*
X532383Y390235D01*
X537461D01*
X540000Y387696D01*
Y377539D01*
X537461Y375000D01*
X532383D01*
X529843Y377539D01*
X517147Y375000D02*
Y390235D01*
X524765Y382617D01*
X514608D01*
D12*
X619000Y61000D02*
X631000D01*
X546000Y429000D02*
Y441000D01*
Y464000D02*
Y476000D01*
X558000Y91000D02*
Y103000D01*
X508000Y250000D02*
Y262000D01*
X546000Y250000D02*
Y262000D01*
X620000Y348000D02*
Y360000D01*
X456500Y29000D02*
Y41000D01*
X328335Y88331D02*
X330002Y89997D01*
X333334D01*
X335000Y88331D01*
Y81666D01*
X333334Y80000D01*
X330002D01*
X328335Y81666D01*
X325003Y89997D02*
X318339D01*
Y88331D01*
X325003Y81666D01*
Y80000D01*
X303335Y88331D02*
X305002Y89997D01*
X308334D01*
X310000Y88331D01*
Y81666D01*
X308334Y80000D01*
X305002D01*
X303335Y81666D01*
X293339Y89997D02*
X296671Y88331D01*
X300003Y84998D01*
Y81666D01*
X298337Y80000D01*
X295005D01*
X293339Y81666D01*
Y83332D01*
X295005Y84998D01*
X300003D01*
X583000Y473000D02*
Y482997D01*
X578002D01*
X576335Y481331D01*
Y477998D01*
X578002Y476332D01*
X583000D01*
X579668D02*
X576335Y473000D01*
X566339D02*
X573003D01*
X566339Y479664D01*
Y481331D01*
X568005Y482997D01*
X571337D01*
X573003Y481331D01*
X580000Y443000D02*
Y452997D01*
X575002D01*
X573335Y451331D01*
Y447998D01*
X575002Y446332D01*
X580000D01*
X576668D02*
X573335Y443000D01*
X570003D02*
X566671D01*
X568337D01*
Y452997D01*
X570003Y451331D01*
D14*
X337660Y37474D02*
Y72526D01*
X330040D02*
X337660D01*
X330040Y37474D02*
X337660D01*
X317340Y72526D02*
X324960D01*
X317340Y37474D02*
X324960D01*
X317340D02*
Y72526D01*
X312660Y37474D02*
Y72526D01*
X305040D02*
X312660D01*
X305040Y37474D02*
X312660D01*
X292340Y72526D02*
X299960D01*
X292340Y37474D02*
X299960D01*
X292340D02*
Y72526D01*
X634652Y43474D02*
X634652Y57190D01*
X615348Y43474D02*
X634652D01*
X615348Y57190D02*
X615348Y43474D01*
X634652Y64810D02*
Y78526D01*
X615348D02*
X634652D01*
X615348Y64810D02*
Y78526D01*
X545974Y390160D02*
X581026D01*
X545974Y382540D02*
Y390160D01*
X581026Y382540D02*
Y390160D01*
X545974Y369840D02*
Y377460D01*
X581026Y369840D02*
Y377460D01*
X545974Y369840D02*
X581026D01*
X545974Y415160D02*
X581026D01*
X545974Y407540D02*
Y415160D01*
X581026Y407540D02*
Y415160D01*
X545974Y394840D02*
Y402460D01*
X581026Y394840D02*
Y402460D01*
X545974Y394840D02*
X581026D01*
X516474Y53840D02*
X551526D01*
Y61460D01*
X516474Y53840D02*
Y61460D01*
X551526Y66540D02*
Y74160D01*
X516474Y66540D02*
Y74160D01*
X551526D01*
X438974Y44840D02*
X474026D01*
Y52460D01*
X438974Y44840D02*
Y52460D01*
X474026Y57540D02*
Y65160D01*
X438974Y57540D02*
Y65160D01*
X474026D01*
X528474Y425348D02*
X542190Y425348D01*
X528474Y425348D02*
Y444652D01*
X542190Y444652D01*
X549810Y425348D02*
X563526D01*
Y444652D01*
X549810D02*
X563526D01*
X528474Y460348D02*
X542190Y460348D01*
X528474Y460348D02*
Y479652D01*
X542190Y479652D01*
X549810Y460348D02*
X563526D01*
Y479652D01*
X549810D02*
X563526D01*
X540474Y87348D02*
X554190Y87348D01*
X540474Y87348D02*
Y106652D01*
X554190Y106652D01*
X561810Y87348D02*
X575526D01*
Y106652D01*
X561810D02*
X575526D01*
X511810Y265652D02*
X525526Y265652D01*
Y246348D02*
Y265652D01*
X511810Y246348D02*
X525526Y246348D01*
X490474Y265652D02*
X504190D01*
X490474Y246348D02*
Y265652D01*
Y246348D02*
X504190D01*
X528474Y246348D02*
X542190Y246348D01*
X528474Y246348D02*
Y265652D01*
X542190Y265652D01*
X549810Y246348D02*
X563526D01*
Y265652D01*
X549810D02*
X563526D01*
X602474Y344348D02*
X616190Y344348D01*
X602474Y344348D02*
Y363652D01*
X616190Y363652D01*
X623810Y344348D02*
X637526D01*
Y363652D01*
X623810D02*
X637526D01*
X438974Y25348D02*
X452690Y25348D01*
X438974Y25348D02*
Y44652D01*
X452690Y44652D01*
X460310Y25348D02*
X474026D01*
Y44652D01*
X460310D02*
X474026D01*
D61*
X255000Y40000D02*
Y66000D01*
X285000Y42000D02*
X288000D01*
Y40000D02*
Y42000D01*
X285000Y40000D02*
X288000D01*
X285000Y41000D02*
X288000D01*
X285000Y40000D02*
Y66000D01*
M02*

View File

@@ -0,0 +1,89 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=128*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD19R,1.2000X1.4000*%
%ADD20R,1.3000X1.5000*%
%ADD21R,1.5000X1.3000*%
%ADD22R,1.4000X1.2000*%
G04:AMPARAMS|DCode=59|XSize=2.3mm|YSize=1.8mm|CornerRadius=0.225mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD59*
21,1,2.3000,1.3500,0,0,0.0*
21,1,1.8500,1.8000,0,0,0.0*
1,1,0.4500,0.9250,-0.6750*
1,1,0.4500,-0.9250,-0.6750*
1,1,0.4500,-0.9250,0.6750*
1,1,0.4500,0.9250,0.6750*
%
%ADD59ROUNDEDRECTD59*%
D19*
X537000Y435000D02*
D03*
X555000D02*
D03*
X537000Y470000D02*
D03*
X555000D02*
D03*
X549000Y97000D02*
D03*
X567000D02*
D03*
X517000Y256000D02*
D03*
X499000D02*
D03*
X537000Y256000D02*
D03*
X555000D02*
D03*
X611000Y354000D02*
D03*
X629000D02*
D03*
X447500Y35000D02*
D03*
X465500D02*
D03*
D20*
X555000Y380000D02*
D03*
X572000D02*
D03*
X555000Y405000D02*
D03*
X572000D02*
D03*
X542500Y64000D02*
D03*
X525500D02*
D03*
X465000Y55000D02*
D03*
X448000D02*
D03*
D21*
X327500Y63500D02*
D03*
Y46500D02*
D03*
X302500Y63500D02*
D03*
Y46500D02*
D03*
D22*
X625000Y52000D02*
D03*
Y70000D02*
D03*
D59*
X270000Y69500D02*
D03*
Y40500D02*
D03*
M02*

View File

@@ -0,0 +1,291 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=16711935*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD24R,1.3500X1.5500*%
%ADD25R,1.4500X1.6500*%
%ADD26R,1.6500X1.4500*%
%ADD27R,1.5500X1.3500*%
%ADD28C,1.6740*%
%ADD29C,1.8500*%
%ADD30O,2.6000X2.0000*%
%ADD31C,1.6500*%
%ADD32R,1.6500X1.6500*%
%ADD33R,1.6500X1.6500*%
%ADD34C,3.1500*%
%ADD35C,2.1500*%
%ADD36C,1.9500*%
%ADD37R,1.9500X1.9500*%
%ADD38C,1.7500*%
%ADD39R,1.7500X1.7500*%
%ADD40R,1.8500X1.8500*%
%ADD41R,1.7500X1.7500*%
%ADD42C,1.7500*%
G04:AMPARAMS|DCode=60|XSize=2.45mm|YSize=1.95mm|CornerRadius=0.3mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD60*
21,1,2.4500,1.3500,0,0,0.0*
21,1,1.8500,1.9500,0,0,0.0*
1,1,0.6000,0.9250,-0.6750*
1,1,0.6000,-0.9250,-0.6750*
1,1,0.6000,-0.9250,0.6750*
1,1,0.6000,0.9250,0.6750*
%
%ADD60ROUNDEDRECTD60*%
D24*
X537000Y435000D02*
D03*
X555000D02*
D03*
X537000Y470000D02*
D03*
X555000D02*
D03*
X549000Y97000D02*
D03*
X567000D02*
D03*
X517000Y256000D02*
D03*
X499000D02*
D03*
X537000Y256000D02*
D03*
X555000D02*
D03*
X611000Y354000D02*
D03*
X629000D02*
D03*
X447500Y35000D02*
D03*
X465500D02*
D03*
D25*
X555000Y380000D02*
D03*
X572000D02*
D03*
X555000Y405000D02*
D03*
X572000D02*
D03*
X542500Y64000D02*
D03*
X525500D02*
D03*
X465000Y55000D02*
D03*
X448000D02*
D03*
D26*
X327500Y63500D02*
D03*
Y46500D02*
D03*
X302500Y63500D02*
D03*
Y46500D02*
D03*
D27*
X625000Y52000D02*
D03*
Y70000D02*
D03*
D28*
X650000Y250000D02*
D03*
X25000Y475000D02*
D03*
Y25000D02*
D03*
D29*
X120000Y347500D02*
D03*
Y320000D02*
D03*
X355400Y430000D02*
D03*
X330000D02*
D03*
X304600D02*
D03*
X587000Y299000D02*
D03*
X235000Y80000D02*
D03*
X245000Y170000D02*
D03*
X574999Y198000D02*
D03*
X528000Y387000D02*
D03*
X500000Y285000D02*
D03*
X543999Y231999D02*
D03*
X451000Y274000D02*
D03*
X520000Y224000D02*
D03*
D30*
X80000Y450000D02*
D03*
X204000D02*
D03*
X80000Y400000D02*
D03*
X204000D02*
D03*
X80000Y100000D02*
D03*
X204000D02*
D03*
X80000Y50000D02*
D03*
X204000D02*
D03*
D31*
X80000Y300800D02*
D03*
Y275400D02*
D03*
Y250000D02*
D03*
Y224600D02*
D03*
X254600Y119000D02*
D03*
X356200D02*
D03*
X330800D02*
D03*
X305400D02*
D03*
X280000D02*
D03*
D32*
X80000Y199200D02*
D03*
D33*
X381600Y119000D02*
D03*
D34*
X190000Y203000D02*
D03*
Y297000D02*
D03*
D35*
X120000Y225000D02*
D03*
Y250000D02*
D03*
Y275000D02*
D03*
D36*
X677000Y383800D02*
D03*
Y460000D02*
D03*
X600800D02*
D03*
Y434600D02*
D03*
Y409200D02*
D03*
X677000Y40000D02*
D03*
Y116200D02*
D03*
X600800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
D37*
X600800Y383800D02*
D03*
Y40000D02*
D03*
D38*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
D39*
Y34400D02*
D03*
D40*
X279200Y430000D02*
D03*
D41*
X424300Y464684D02*
D03*
D42*
Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
D60*
X270000Y69500D02*
D03*
Y40500D02*
D03*
M02*

View File

@@ -0,0 +1,1965 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Physical_Order=1*
G04 Layer_Color=255*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD18R,2.5000X2.2000*%
%ADD19R,1.2000X1.4000*%
%ADD20R,1.3000X1.5000*%
%ADD21R,1.5000X1.3000*%
%ADD22R,1.4000X1.2000*%
%ADD43C,0.8000*%
%ADD44C,1.5240*%
%ADD45C,1.7000*%
%ADD46O,2.4000X1.8000*%
%ADD47C,1.5000*%
%ADD48R,1.5000X1.5000*%
%ADD49R,1.5000X1.5000*%
%ADD50C,3.0000*%
%ADD51C,2.0000*%
%ADD52C,1.8000*%
%ADD53R,1.8000X1.8000*%
%ADD54C,1.6000*%
%ADD55R,1.6000X1.6000*%
%ADD56R,1.7000X1.7000*%
%ADD57R,1.6000X1.6000*%
%ADD58C,1.6000*%
G36*
X692500Y471011D02*
X687500Y469314D01*
X686985Y469985D01*
X684060Y472229D01*
X680655Y473640D01*
X680500Y473660D01*
Y460000D01*
Y446340D01*
X680655Y446360D01*
X684060Y447771D01*
X686985Y450015D01*
X687500Y450686D01*
X692500Y448989D01*
Y394811D01*
X687500Y393114D01*
X686985Y393785D01*
X684060Y396029D01*
X680655Y397440D01*
X680500Y397460D01*
Y383800D01*
Y370140D01*
X680655Y370160D01*
X684060Y371571D01*
X686985Y373815D01*
X687500Y374486D01*
X692500Y372789D01*
Y339432D01*
X691977Y338962D01*
X687500Y337248D01*
X685960Y338429D01*
X682555Y339840D01*
X678900Y340321D01*
X675245Y339840D01*
X671840Y338429D01*
X668915Y336185D01*
X663485D01*
X660560Y338429D01*
X657155Y339840D01*
X654671Y340167D01*
X640000Y354838D01*
Y366000D01*
X617697D01*
X614800Y369800D01*
Y380300D01*
X600800D01*
X586800D01*
Y371078D01*
X578760D01*
X556419Y393419D01*
X554539Y394861D01*
X552350Y395768D01*
X550000Y396078D01*
X538051D01*
X537628Y396628D01*
X534808Y398792D01*
X533444Y399357D01*
X532003Y404067D01*
X532131Y405116D01*
X552537Y425522D01*
X590119D01*
X590815Y424615D01*
Y419185D01*
X588571Y416260D01*
X587160Y412855D01*
X587140Y412700D01*
X600800D01*
X614460D01*
X614440Y412855D01*
X613029Y416260D01*
X610785Y419185D01*
Y424615D01*
X613029Y427540D01*
X614440Y430945D01*
X614921Y434600D01*
X614440Y438255D01*
X613029Y441660D01*
X610785Y444585D01*
Y450015D01*
X613029Y452940D01*
X614440Y456345D01*
X614921Y460000D01*
X614440Y463655D01*
X613029Y467060D01*
X610785Y469985D01*
X607860Y472229D01*
X604455Y473640D01*
X600800Y474121D01*
X597145Y473640D01*
X593740Y472229D01*
X590815Y469985D01*
X588571Y467060D01*
X587160Y463655D01*
X586679Y460000D01*
X587160Y456345D01*
X588571Y452940D01*
X590815Y450015D01*
Y448389D01*
X586191Y443678D01*
X548777D01*
X546428Y443368D01*
X544239Y442461D01*
X542359Y441019D01*
X534078Y432738D01*
X529078Y434809D01*
Y447377D01*
X528768Y449726D01*
X527861Y451916D01*
X526419Y453796D01*
X526419Y453796D01*
X513324Y466891D01*
X513165Y468093D01*
X511855Y471256D01*
X509772Y473971D01*
X507056Y476055D01*
X503894Y477365D01*
X500500Y477812D01*
X497106Y477365D01*
X493944Y476055D01*
X491228Y473971D01*
X490125Y472534D01*
X488281Y471119D01*
X459581Y442419D01*
X458139Y440539D01*
X457232Y438349D01*
X456922Y436000D01*
Y362301D01*
X457232Y359952D01*
X458139Y357763D01*
X459581Y355883D01*
X487245Y328219D01*
X486979Y326200D01*
X487460Y322545D01*
X488871Y319140D01*
X491115Y316215D01*
X494040Y313971D01*
X494807Y313653D01*
X494819Y313563D01*
X495726Y311374D01*
X497169Y309494D01*
X503458Y303204D01*
X501123Y298468D01*
X500000Y298616D01*
X496476Y298152D01*
X493192Y296792D01*
X490372Y294628D01*
X488208Y291808D01*
X486847Y288524D01*
X486504Y285917D01*
X486159Y285401D01*
X485130Y284407D01*
X481636Y282754D01*
X481601Y282768D01*
X479251Y283078D01*
X461051D01*
X460628Y283628D01*
X457808Y285792D01*
X454524Y287153D01*
X451000Y287617D01*
X447476Y287153D01*
X444192Y285792D01*
X441372Y283628D01*
X439208Y280808D01*
X437848Y277524D01*
X437735Y276673D01*
X432456Y274881D01*
X410578Y296759D01*
Y376814D01*
X413332Y378308D01*
X415578Y378806D01*
X417744Y377144D01*
X420800Y375878D01*
Y388500D01*
X424300D01*
Y392000D01*
X436921D01*
X435655Y395056D01*
X433572Y397771D01*
X433031Y398186D01*
X432878Y398493D01*
Y403907D01*
X433031Y404213D01*
X433572Y404628D01*
X435655Y407344D01*
X436965Y410506D01*
X437412Y413900D01*
X436965Y417294D01*
X435655Y420456D01*
X433572Y423172D01*
X433031Y423586D01*
X432878Y423893D01*
Y429307D01*
X433031Y429613D01*
X433572Y430028D01*
X435655Y432744D01*
X436965Y435906D01*
X437412Y439300D01*
X436965Y442693D01*
X435655Y445856D01*
X435019Y446685D01*
X437300Y451685D01*
X437300D01*
Y477685D01*
X411300D01*
Y458609D01*
X406300Y456538D01*
X391419Y471419D01*
X389539Y472862D01*
X387349Y473768D01*
X385000Y474078D01*
X225000D01*
X225000Y474078D01*
X222651Y473768D01*
X220461Y472862D01*
X218581Y471419D01*
X210759Y463596D01*
X210655Y463640D01*
X207000Y464121D01*
X201000D01*
X197345Y463640D01*
X193940Y462229D01*
X191015Y459985D01*
X188771Y457060D01*
X187360Y453655D01*
X186879Y450000D01*
X187360Y446345D01*
X188771Y442940D01*
X191015Y440015D01*
X193940Y437771D01*
X197345Y436360D01*
X201000Y435879D01*
X207000D01*
X210655Y436360D01*
X214060Y437771D01*
X216985Y440015D01*
X219229Y442940D01*
X220640Y446345D01*
X220861Y448023D01*
X228760Y455922D01*
X331552D01*
X333465Y451303D01*
X324494Y442332D01*
X323192Y441792D01*
X320372Y439628D01*
X314228D01*
X311408Y441792D01*
X308124Y443153D01*
X304600Y443616D01*
X301076Y443153D01*
X297792Y441792D01*
X297700Y441722D01*
X292700Y443500D01*
Y443500D01*
X282700D01*
Y430000D01*
Y416500D01*
X292700D01*
Y416500D01*
X297700Y418278D01*
X297792Y418208D01*
X301076Y416847D01*
X304600Y416384D01*
X308124Y416847D01*
X311408Y418208D01*
X314228Y420372D01*
X320372D01*
X323192Y418208D01*
X326476Y416847D01*
X330000Y416384D01*
X333524Y416847D01*
X336808Y418208D01*
X339628Y420372D01*
X345772D01*
X348592Y418208D01*
X351876Y416847D01*
X355400Y416384D01*
X358924Y416847D01*
X359907Y417255D01*
X365922Y411240D01*
Y276615D01*
X366232Y274266D01*
X367139Y272076D01*
X368581Y270196D01*
X418196Y220581D01*
X420076Y219139D01*
X422266Y218232D01*
X424615Y217922D01*
X424615Y217922D01*
X478449D01*
X478969Y217181D01*
X480146Y212922D01*
X479881Y212719D01*
X479881Y212719D01*
X416240Y149078D01*
X245000D01*
X242651Y148768D01*
X240461Y147861D01*
X238581Y146419D01*
X206283Y114121D01*
X201000D01*
X197345Y113640D01*
X193940Y112229D01*
X191015Y109985D01*
X188771Y107060D01*
X187360Y103655D01*
X186879Y100000D01*
X187360Y96345D01*
X188771Y92940D01*
X191015Y90015D01*
X193940Y87771D01*
X197345Y86360D01*
X201000Y85879D01*
X207000D01*
X210655Y86360D01*
X214060Y87771D01*
X216985Y90015D01*
X219229Y92940D01*
X220640Y96345D01*
X221121Y100000D01*
X220739Y102901D01*
X237131Y119293D01*
X237927Y119245D01*
X242215Y117306D01*
X242422Y115737D01*
X243681Y112696D01*
X245685Y110085D01*
X248296Y108081D01*
X251337Y106822D01*
X254600Y106392D01*
X257863Y106822D01*
X260904Y108081D01*
X263515Y110085D01*
X264318Y111131D01*
X265495Y111518D01*
X269104D01*
X270282Y111131D01*
X271085Y110085D01*
X273696Y108081D01*
X276737Y106822D01*
X280000Y106392D01*
X283263Y106822D01*
X286304Y108081D01*
X288915Y110085D01*
X289718Y111131D01*
X290896Y111518D01*
X294505D01*
X295682Y111131D01*
X296485Y110085D01*
X299096Y108081D01*
X302137Y106822D01*
X305400Y106392D01*
X308663Y106822D01*
X311704Y108081D01*
X314315Y110085D01*
X315118Y111131D01*
X316296Y111518D01*
X319904D01*
X321082Y111131D01*
X321885Y110085D01*
X324496Y108081D01*
X327537Y106822D01*
X330800Y106392D01*
X334063Y106822D01*
X337104Y108081D01*
X339715Y110085D01*
X340518Y111131D01*
X341696Y111518D01*
X345304D01*
X346482Y111131D01*
X347285Y110085D01*
X349896Y108081D01*
X352937Y106822D01*
X356200Y106392D01*
X359463Y106822D01*
X362504Y108081D01*
X364100Y109306D01*
X367569Y108225D01*
X369100Y107065D01*
Y106500D01*
X394100D01*
Y130922D01*
X420000D01*
X422350Y131232D01*
X424539Y132139D01*
X426419Y133581D01*
X460803Y167965D01*
X465422Y166052D01*
Y151000D01*
X463500D01*
Y139338D01*
X448162Y124000D01*
X437000D01*
Y102000D01*
Y96838D01*
X435640Y95478D01*
X427568D01*
X425374Y99904D01*
X425449Y100550D01*
X425631Y100913D01*
X426172Y101328D01*
X428256Y104044D01*
X429565Y107206D01*
X430012Y110600D01*
X429565Y113994D01*
X428256Y117156D01*
X426172Y119872D01*
X423456Y121955D01*
X420294Y123265D01*
X416900Y123712D01*
X413506Y123265D01*
X410344Y121955D01*
X407628Y119872D01*
X405545Y117156D01*
X404235Y113994D01*
X403788Y110600D01*
X404235Y107206D01*
X405545Y104044D01*
X407628Y101328D01*
X408169Y100913D01*
X408322Y100607D01*
Y95193D01*
X408169Y94887D01*
X407628Y94472D01*
X405545Y91756D01*
X405263Y91076D01*
X404267Y90281D01*
X400019Y88686D01*
X399206Y88703D01*
X399049Y88768D01*
X396700Y89078D01*
X245051D01*
X244628Y89628D01*
X241808Y91792D01*
X238524Y93153D01*
X235000Y93616D01*
X231476Y93153D01*
X228192Y91792D01*
X225372Y89628D01*
X223208Y86808D01*
X221847Y83524D01*
X221384Y80000D01*
X221847Y76476D01*
X223208Y73192D01*
X225372Y70372D01*
X225922Y69949D01*
Y61000D01*
X220000D01*
X220000Y61000D01*
X215160Y61385D01*
X214060Y62229D01*
X210655Y63640D01*
X207500Y64055D01*
Y50000D01*
X200500D01*
Y64055D01*
X197345Y63640D01*
X193940Y62229D01*
X191015Y59985D01*
X188771Y57060D01*
X188501Y56408D01*
X182741Y55097D01*
X72578Y165260D01*
Y186700D01*
X76500D01*
Y199200D01*
X80000D01*
Y202700D01*
X92500D01*
Y205721D01*
X97500Y207792D01*
X141500Y163792D01*
Y158000D01*
X181500D01*
Y160922D01*
X189000D01*
Y158000D01*
X215500D01*
Y170000D01*
X220500D01*
Y158000D01*
X229000D01*
Y160867D01*
X229548Y161169D01*
X234000Y162159D01*
X235372Y160372D01*
X238192Y158208D01*
X241476Y156847D01*
X245000Y156383D01*
X248524Y156847D01*
X251808Y158208D01*
X254628Y160372D01*
X256792Y163192D01*
X258153Y166476D01*
X258616Y170000D01*
X258153Y173524D01*
X256792Y176808D01*
X254628Y179628D01*
X251808Y181792D01*
X248524Y183153D01*
X245000Y183616D01*
X244312Y183526D01*
X235419Y192419D01*
X233539Y193862D01*
X231349Y194768D01*
X229000Y195078D01*
X213722D01*
X211016Y197777D01*
X209809Y200078D01*
X210097Y203000D01*
X209711Y206921D01*
X208567Y210691D01*
X206710Y214165D01*
X204211Y217211D01*
X201165Y219710D01*
X197691Y221567D01*
X193921Y222711D01*
X190000Y223097D01*
X186079Y222711D01*
X182309Y221567D01*
X178835Y219710D01*
X175789Y217211D01*
X173290Y214165D01*
X171433Y210691D01*
X170289Y206921D01*
X169903Y203000D01*
X170289Y199079D01*
X171433Y195309D01*
X173290Y191835D01*
X175789Y188789D01*
X177970Y187000D01*
X177381Y183750D01*
X176380Y182000D01*
X148968D01*
X125269Y205699D01*
X125557Y208800D01*
X126547Y211491D01*
X128374Y212468D01*
X130658Y214342D01*
X132532Y216626D01*
X133925Y219232D01*
X134783Y222059D01*
X135073Y225000D01*
X134783Y227941D01*
X133925Y230768D01*
X132532Y233374D01*
X130658Y235658D01*
Y239342D01*
X132532Y241626D01*
X133925Y244232D01*
X134783Y247059D01*
X135073Y250000D01*
X134783Y252941D01*
X133925Y255768D01*
X132532Y258374D01*
X130658Y260658D01*
Y264342D01*
X132532Y266626D01*
X133925Y269232D01*
X134783Y272059D01*
X135073Y275000D01*
X134783Y277941D01*
X133925Y280768D01*
X132532Y283374D01*
X130658Y285658D01*
X128374Y287532D01*
X125768Y288925D01*
X122941Y289783D01*
X120000Y290073D01*
X117059Y289783D01*
X114232Y288925D01*
X111626Y287532D01*
X109342Y285658D01*
X107468Y283374D01*
X106075Y280768D01*
X105217Y277941D01*
X104927Y275000D01*
X105217Y272059D01*
X106075Y269232D01*
X107468Y266626D01*
X109342Y264342D01*
Y260658D01*
X107468Y258374D01*
X106075Y255768D01*
X105217Y252941D01*
X104927Y250000D01*
X105217Y247059D01*
X106075Y244232D01*
X106532Y243377D01*
X102472Y240366D01*
X92573Y250265D01*
X92178Y253263D01*
X90919Y256304D01*
X88915Y258915D01*
X87869Y259718D01*
X87482Y260896D01*
Y264505D01*
X87869Y265682D01*
X88915Y266485D01*
X90919Y269096D01*
X92178Y272137D01*
X92608Y275400D01*
X92390Y277053D01*
X93105Y277767D01*
X93253Y277881D01*
X122022Y306650D01*
X123524Y306847D01*
X126808Y308208D01*
X129628Y310372D01*
X131792Y313192D01*
X133153Y316476D01*
X133616Y320000D01*
X133153Y323524D01*
X131792Y326808D01*
X129628Y329628D01*
X128075Y330820D01*
X127646Y332477D01*
Y335023D01*
X128075Y336680D01*
X129628Y337872D01*
X131792Y340692D01*
X133153Y343976D01*
X133616Y347500D01*
X133153Y351024D01*
X131792Y354308D01*
X129628Y357128D01*
X126808Y359292D01*
X123524Y360653D01*
X120000Y361116D01*
X116476Y360653D01*
X113192Y359292D01*
X110372Y357128D01*
X108208Y354308D01*
X106847Y351024D01*
X106383Y347500D01*
X106474Y346812D01*
X80581Y320919D01*
X79139Y319039D01*
X78232Y316849D01*
X77922Y314500D01*
Y313454D01*
X77554Y313086D01*
X76737Y312978D01*
X73696Y311719D01*
X71085Y309715D01*
X69081Y307104D01*
X67822Y304063D01*
X67392Y300800D01*
X67822Y297537D01*
X69081Y294496D01*
X71085Y291885D01*
X72131Y291082D01*
X72518Y289904D01*
Y286296D01*
X72131Y285118D01*
X71085Y284315D01*
X69081Y281704D01*
X67822Y278663D01*
X67392Y275400D01*
X67822Y272137D01*
X69081Y269096D01*
X71085Y266485D01*
X72131Y265682D01*
X72518Y264505D01*
Y260896D01*
X72131Y259718D01*
X71085Y258915D01*
X69081Y256304D01*
X67822Y253263D01*
X67392Y250000D01*
X67822Y246737D01*
X69081Y243696D01*
X71085Y241085D01*
X72131Y240282D01*
X72518Y239104D01*
Y235495D01*
X72131Y234318D01*
X71085Y233515D01*
X69081Y230904D01*
X67822Y227863D01*
X67714Y227046D01*
X64602Y223934D01*
X62738Y222504D01*
X57081Y216847D01*
X55638Y214967D01*
X54732Y212777D01*
X54422Y210428D01*
Y161500D01*
X54732Y159151D01*
X55638Y156961D01*
X57081Y155081D01*
X193581Y18581D01*
X195461Y17139D01*
X197651Y16232D01*
X200000Y15922D01*
X200000Y15922D01*
X367500D01*
X369850Y16232D01*
X372039Y17139D01*
X373919Y18581D01*
X384338Y29000D01*
X400000D01*
Y29000D01*
X405000Y29159D01*
X405545Y27844D01*
X407628Y25128D01*
X410344Y23045D01*
X413506Y21735D01*
X416900Y21288D01*
X420294Y21735D01*
X423456Y23045D01*
X426172Y25128D01*
X428256Y27844D01*
X429565Y31006D01*
X432000Y34246D01*
X432500Y34206D01*
X437000Y33000D01*
Y33000D01*
X480100D01*
Y21400D01*
X506100D01*
Y47400D01*
X506100D01*
X503808Y52400D01*
X504455Y53244D01*
X505765Y56406D01*
X506212Y59800D01*
X505765Y63194D01*
X504455Y66356D01*
X502372Y69072D01*
X501831Y69487D01*
X501678Y69793D01*
Y75207D01*
X501831Y75513D01*
X502372Y75928D01*
X504455Y78644D01*
X505721Y81700D01*
X493100D01*
X480479D01*
X481745Y78644D01*
X482239Y78000D01*
X479773Y73000D01*
X472500D01*
Y61500D01*
X467500D01*
Y73000D01*
X452000D01*
Y61500D01*
X447000D01*
Y73000D01*
X442966D01*
X441749Y77632D01*
X443939Y78539D01*
X445819Y79981D01*
X449838Y84000D01*
X461000D01*
Y102000D01*
Y111162D01*
X476838Y127000D01*
X485657D01*
X486651Y122000D01*
X486544Y121955D01*
X483828Y119872D01*
X481745Y117156D01*
X480479Y114100D01*
X493100D01*
X505721D01*
X504455Y117156D01*
X502372Y119872D01*
X499656Y121955D01*
X499548Y122000D01*
X500543Y127000D01*
X503500D01*
Y136500D01*
X492500D01*
Y139000D01*
X490000D01*
Y151000D01*
X483578D01*
Y166453D01*
X488578Y167448D01*
X488871Y166740D01*
X491115Y163815D01*
X494040Y161571D01*
X497445Y160160D01*
X501100Y159679D01*
X504755Y160160D01*
X508160Y161571D01*
X511085Y163815D01*
X516515D01*
X519440Y161571D01*
X522845Y160160D01*
X526500Y159679D01*
X530155Y160160D01*
X533560Y161571D01*
X536485Y163815D01*
X541915D01*
X544840Y161571D01*
X548245Y160160D01*
X551900Y159679D01*
X555555Y160160D01*
X558960Y161571D01*
X561885Y163815D01*
X567315D01*
X570240Y161571D01*
X573645Y160160D01*
X577300Y159679D01*
X580955Y160160D01*
X584360Y161571D01*
X587285Y163815D01*
X592715D01*
X595640Y161571D01*
X599045Y160160D01*
X602700Y159679D01*
X606355Y160160D01*
X609760Y161571D01*
X612685Y163815D01*
X618115D01*
X621040Y161571D01*
X624445Y160160D01*
X628100Y159679D01*
X631755Y160160D01*
X635160Y161571D01*
X638085Y163815D01*
X643515D01*
X646440Y161571D01*
X649845Y160160D01*
X653500Y159679D01*
X657155Y160160D01*
X660560Y161571D01*
X663485Y163815D01*
X668915D01*
X671840Y161571D01*
X675245Y160160D01*
X678900Y159679D01*
X682555Y160160D01*
X685960Y161571D01*
X687500Y162752D01*
X691977Y161038D01*
X692500Y160568D01*
Y127211D01*
X687500Y125514D01*
X686985Y126185D01*
X684060Y128429D01*
X680655Y129840D01*
X680500Y129860D01*
Y116200D01*
Y102540D01*
X680655Y102560D01*
X684060Y103971D01*
X686985Y106215D01*
X687500Y106886D01*
X692500Y105189D01*
Y51011D01*
X687500Y49314D01*
X686985Y49985D01*
X684060Y52229D01*
X680655Y53640D01*
X680500Y53660D01*
Y40000D01*
Y26340D01*
X680655Y26360D01*
X684060Y27771D01*
X686985Y30015D01*
X687500Y30686D01*
X692500Y28989D01*
Y9092D01*
X71942D01*
X71617Y9546D01*
X69222Y14092D01*
X70208Y19048D01*
X70598Y25000D01*
X70208Y30952D01*
X69927Y32364D01*
X71698Y34436D01*
X74253Y36241D01*
X76500Y35945D01*
Y50000D01*
Y64055D01*
X73345Y63640D01*
X69940Y62229D01*
X67015Y59985D01*
X64771Y57060D01*
X64541Y56504D01*
X58741Y55534D01*
X57242Y57242D01*
X52758Y61175D01*
X47799Y64489D01*
X42449Y67127D01*
X36802Y69044D01*
X30952Y70208D01*
X25000Y70598D01*
X19048Y70208D01*
X17500Y69900D01*
X12500Y74003D01*
Y425997D01*
X17500Y430100D01*
X19048Y429793D01*
X25000Y429402D01*
X30952Y429793D01*
X36802Y430956D01*
X42449Y432873D01*
X47799Y435511D01*
X52758Y438825D01*
X57242Y442758D01*
X58741Y444466D01*
X64541Y443496D01*
X64771Y442940D01*
X67015Y440015D01*
X69940Y437771D01*
X73345Y436360D01*
X77000Y435879D01*
X83000D01*
X86655Y436360D01*
X90060Y437771D01*
X92985Y440015D01*
X95229Y442940D01*
X96640Y446345D01*
X97121Y450000D01*
X96640Y453655D01*
X95229Y457060D01*
X92985Y459985D01*
X90060Y462229D01*
X86655Y463640D01*
X83000Y464121D01*
X77000D01*
X74253Y463759D01*
X71698Y465564D01*
X69927Y467635D01*
X70208Y469048D01*
X70598Y475000D01*
X70208Y480952D01*
X69583Y484092D01*
X73069Y489092D01*
X692500D01*
Y471011D01*
D02*
G37*
G36*
X570240Y313971D02*
X573645Y312560D01*
X574261Y312479D01*
X574930Y311651D01*
X576255Y307174D01*
X575208Y305808D01*
X573848Y302524D01*
X573844Y302500D01*
X587000D01*
Y295500D01*
X573844D01*
X573848Y295476D01*
X575208Y292192D01*
X577372Y289372D01*
X580110Y287270D01*
X580193Y287201D01*
X581263Y281352D01*
X576489Y276578D01*
X542364D01*
X517824Y276578D01*
X517640Y276793D01*
X515915Y281577D01*
X520838Y286500D01*
X534000D01*
Y299000D01*
X536500D01*
Y301500D01*
X548000D01*
Y307549D01*
X551889Y312066D01*
X552716Y312187D01*
X555555Y312560D01*
X558960Y313971D01*
X561885Y316215D01*
X567315D01*
X570240Y313971D01*
D02*
G37*
%LPC*%
G36*
X673500Y473660D02*
X673345Y473640D01*
X669940Y472229D01*
X667015Y469985D01*
X664771Y467060D01*
X663360Y463655D01*
X663340Y463500D01*
X673500D01*
Y473660D01*
D02*
G37*
G36*
Y456500D02*
X663340D01*
X663360Y456345D01*
X664771Y452940D01*
X667015Y450015D01*
X669940Y447771D01*
X673345Y446360D01*
X673500Y446340D01*
Y456500D01*
D02*
G37*
G36*
X275700Y443500D02*
X265700D01*
Y433500D01*
X275700D01*
Y443500D01*
D02*
G37*
G36*
Y426500D02*
X265700D01*
Y416500D01*
X275700D01*
Y426500D01*
D02*
G37*
G36*
X207500Y414055D02*
Y403500D01*
X220660D01*
X220640Y403655D01*
X219229Y407060D01*
X216985Y409985D01*
X214060Y412229D01*
X210655Y413640D01*
X207500Y414055D01*
D02*
G37*
G36*
X83500D02*
Y403500D01*
X96660D01*
X96640Y403655D01*
X95229Y407060D01*
X92985Y409985D01*
X90060Y412229D01*
X86655Y413640D01*
X83500Y414055D01*
D02*
G37*
G36*
X200500Y414055D02*
X197345Y413640D01*
X193940Y412229D01*
X191015Y409985D01*
X188771Y407060D01*
X187360Y403655D01*
X187340Y403500D01*
X200500D01*
Y414055D01*
D02*
G37*
G36*
X76500D02*
X73345Y413640D01*
X69940Y412229D01*
X67015Y409985D01*
X64771Y407060D01*
X63360Y403655D01*
X63340Y403500D01*
X76500D01*
Y414055D01*
D02*
G37*
G36*
X673500Y397460D02*
X673345Y397440D01*
X669940Y396029D01*
X667015Y393785D01*
X664771Y390860D01*
X663360Y387455D01*
X663340Y387300D01*
X673500D01*
Y397460D01*
D02*
G37*
G36*
X614460Y405700D02*
X600800D01*
X587140D01*
X587160Y405545D01*
X588298Y402800D01*
X586800Y397800D01*
X586800D01*
Y387300D01*
X600800D01*
X614800D01*
Y397800D01*
X614800Y397800D01*
X613302Y402800D01*
X614440Y405545D01*
X614460Y405700D01*
D02*
G37*
G36*
X220660Y396500D02*
X207500D01*
Y385945D01*
X210655Y386360D01*
X214060Y387771D01*
X216985Y390015D01*
X219229Y392940D01*
X220640Y396345D01*
X220660Y396500D01*
D02*
G37*
G36*
X96660D02*
X83500D01*
Y385945D01*
X86655Y386360D01*
X90060Y387771D01*
X92985Y390015D01*
X95229Y392940D01*
X96640Y396345D01*
X96660Y396500D01*
D02*
G37*
G36*
X200500D02*
X187340D01*
X187360Y396345D01*
X188771Y392940D01*
X191015Y390015D01*
X193940Y387771D01*
X197345Y386360D01*
X200500Y385945D01*
Y396500D01*
D02*
G37*
G36*
X76500D02*
X63340D01*
X63360Y396345D01*
X64771Y392940D01*
X67015Y390015D01*
X69940Y387771D01*
X73345Y386360D01*
X76500Y385945D01*
Y396500D01*
D02*
G37*
G36*
X436921Y385000D02*
X427800D01*
Y375878D01*
X430856Y377144D01*
X433572Y379228D01*
X435655Y381944D01*
X436921Y385000D01*
D02*
G37*
G36*
X673500Y380300D02*
X663340D01*
X663360Y380145D01*
X664771Y376740D01*
X667015Y373815D01*
X669940Y371571D01*
X673345Y370160D01*
X673500Y370140D01*
Y380300D01*
D02*
G37*
G36*
X190000Y317097D02*
X186079Y316711D01*
X182309Y315567D01*
X178835Y313710D01*
X175789Y311211D01*
X173290Y308165D01*
X171433Y304691D01*
X170289Y300921D01*
X169903Y297000D01*
X170289Y293079D01*
X171433Y289309D01*
X173290Y285835D01*
X175789Y282789D01*
X178835Y280290D01*
X182309Y278433D01*
X186079Y277289D01*
X190000Y276903D01*
X193921Y277289D01*
X197691Y278433D01*
X201165Y280290D01*
X204211Y282789D01*
X206710Y285835D01*
X208567Y289309D01*
X209711Y293079D01*
X210097Y297000D01*
X209711Y300921D01*
X208567Y304691D01*
X206710Y308165D01*
X204211Y311211D01*
X201165Y313710D01*
X197691Y315567D01*
X193921Y316711D01*
X190000Y317097D01*
D02*
G37*
G36*
X92500Y195700D02*
X83500D01*
Y186700D01*
X92500D01*
Y195700D01*
D02*
G37*
G36*
X503500Y151000D02*
X495000D01*
Y141500D01*
X503500D01*
Y151000D01*
D02*
G37*
G36*
X673500Y129860D02*
X673345Y129840D01*
X669940Y128429D01*
X667015Y126185D01*
X664771Y123260D01*
X663360Y119855D01*
X663340Y119700D01*
X673500D01*
Y129860D01*
D02*
G37*
G36*
Y112700D02*
X663340D01*
X663360Y112545D01*
X664771Y109140D01*
X667015Y106215D01*
X669940Y103971D01*
X673345Y102560D01*
X673500Y102540D01*
Y112700D01*
D02*
G37*
G36*
X505721Y107100D02*
X493100D01*
X480479D01*
X481745Y104044D01*
X483828Y101328D01*
X484369Y100913D01*
X484522Y100607D01*
Y95193D01*
X484369Y94887D01*
X483828Y94472D01*
X481745Y91756D01*
X480479Y88700D01*
X493100D01*
X505721D01*
X504455Y91756D01*
X502372Y94472D01*
X501831Y94887D01*
X501678Y95193D01*
Y100607D01*
X501831Y100913D01*
X502372Y101328D01*
X504455Y104044D01*
X505721Y107100D01*
D02*
G37*
G36*
X83000Y114121D02*
X77000D01*
X73345Y113640D01*
X69940Y112229D01*
X67015Y109985D01*
X64771Y107060D01*
X63360Y103655D01*
X62879Y100000D01*
X63360Y96345D01*
X64771Y92940D01*
X67015Y90015D01*
X69940Y87771D01*
X73345Y86360D01*
X77000Y85879D01*
X83000D01*
X86655Y86360D01*
X90060Y87771D01*
X92985Y90015D01*
X95229Y92940D01*
X96640Y96345D01*
X97121Y100000D01*
X96640Y103655D01*
X95229Y107060D01*
X92985Y109985D01*
X90060Y112229D01*
X86655Y113640D01*
X83000Y114121D01*
D02*
G37*
G36*
X83500Y64055D02*
Y53500D01*
X96660D01*
X96640Y53655D01*
X95229Y57060D01*
X92985Y59985D01*
X90060Y62229D01*
X86655Y63640D01*
X83500Y64055D01*
D02*
G37*
G36*
X673500Y53660D02*
X673345Y53640D01*
X669940Y52229D01*
X667015Y49985D01*
X664771Y47060D01*
X663360Y43655D01*
X663340Y43500D01*
X673500D01*
Y53660D01*
D02*
G37*
G36*
X96660Y46500D02*
X83500D01*
Y35945D01*
X86655Y36360D01*
X90060Y37771D01*
X92985Y40015D01*
X95229Y42940D01*
X96640Y46345D01*
X96660Y46500D01*
D02*
G37*
G36*
X673500Y36500D02*
X663340D01*
X663360Y36345D01*
X664771Y32940D01*
X667015Y30015D01*
X669940Y27771D01*
X673345Y26360D01*
X673500Y26340D01*
Y36500D01*
D02*
G37*
G36*
X600800Y130321D02*
X597145Y129840D01*
X593740Y128429D01*
X590815Y126185D01*
X588571Y123260D01*
X587160Y119855D01*
X586679Y116200D01*
X587160Y112545D01*
X588571Y109140D01*
X590815Y106215D01*
Y100785D01*
X588571Y97860D01*
X587160Y94455D01*
X586679Y90800D01*
X587160Y87145D01*
X588571Y83740D01*
X590815Y80815D01*
Y75385D01*
X588571Y72460D01*
X587160Y69055D01*
X586679Y65400D01*
X587160Y61745D01*
X588298Y59000D01*
X586800Y54000D01*
X586800D01*
Y26000D01*
X614800D01*
Y54000D01*
X614800Y54000D01*
X613302Y59000D01*
X614440Y61745D01*
X614921Y65400D01*
X614440Y69055D01*
X613029Y72460D01*
X610785Y75385D01*
Y80815D01*
X613029Y83740D01*
X614440Y87145D01*
X614921Y90800D01*
X614440Y94455D01*
X613029Y97860D01*
X610785Y100785D01*
Y106215D01*
X613029Y109140D01*
X614440Y112545D01*
X614921Y116200D01*
X614440Y119855D01*
X613029Y123260D01*
X610785Y126185D01*
X607860Y128429D01*
X604455Y129840D01*
X600800Y130321D01*
D02*
G37*
G36*
X548000Y296500D02*
X539000D01*
Y286500D01*
X548000D01*
Y296500D01*
D02*
G37*
%LPD*%
D18*
X382500Y45000D02*
D03*
X237500D02*
D03*
D19*
X200000Y170000D02*
D03*
X218000D02*
D03*
X170500D02*
D03*
X152500D02*
D03*
X474500Y139000D02*
D03*
X492500D02*
D03*
X629000Y354000D02*
D03*
X611000D02*
D03*
D20*
X536500Y299000D02*
D03*
X519500D02*
D03*
X523500Y352000D02*
D03*
X506500D02*
D03*
D21*
X449500Y44500D02*
D03*
Y61500D02*
D03*
X470000Y44500D02*
D03*
Y61500D02*
D03*
D22*
X449000Y113000D02*
D03*
Y95000D02*
D03*
D43*
X367500Y25000D02*
X385000Y42500D01*
X200000Y25000D02*
X367500D01*
X63500Y161500D02*
X200000Y25000D01*
X432884Y44500D02*
X449500D01*
X417584Y59800D02*
X432884Y44500D01*
X449500D02*
X470000D01*
X416900Y59800D02*
X417584D01*
X396700Y80000D02*
X416900Y59800D01*
X235000Y80000D02*
X396700D01*
X63500Y161500D02*
Y210428D01*
X148130Y170000D02*
X152500D01*
X101000Y217130D02*
X148130Y170000D01*
X63500Y210428D02*
X69157Y216085D01*
X69591D01*
X78106Y224600D01*
X80000D01*
X101000Y217130D02*
Y229000D01*
X235000Y50000D02*
Y80000D01*
X118278Y315743D02*
Y318278D01*
X86834Y284300D02*
X118278Y315743D01*
X86800Y284300D02*
X86834D01*
X80000Y277500D02*
X86800Y284300D01*
X80000Y275400D02*
Y277500D01*
X137500Y318278D02*
X140778Y315000D01*
X170000D01*
X118278Y318278D02*
X120000Y320000D01*
X87000Y309694D02*
Y314500D01*
X80000Y302694D02*
X87000Y309694D01*
X80000Y300800D02*
Y302694D01*
X87000Y314500D02*
X120000Y347500D01*
X200000Y177728D02*
X208272Y186000D01*
X200000Y170000D02*
Y177728D01*
X229000Y186000D02*
X245000Y170000D01*
X208272Y186000D02*
X229000D01*
X170500Y170000D02*
X200000D01*
X78661Y223261D02*
X80000Y224600D01*
X524350Y328350D02*
X525000Y329000D01*
X523500Y327500D02*
X524350Y328350D01*
X523000Y332700D02*
Y354500D01*
X80000Y250000D02*
X101000Y229000D01*
X628100Y315351D02*
Y326200D01*
X580249Y267500D02*
X628100Y315351D01*
X542364Y267500D02*
X580249D01*
X598477Y231000D02*
X653500Y175977D01*
X571249Y231000D02*
X598477D01*
X653500Y173800D02*
Y175977D01*
X628100Y173800D02*
Y175977D01*
X588577Y215500D02*
X628100Y175977D01*
X552248Y215500D02*
X588577D01*
X570299Y193300D02*
X574999Y198000D01*
X653250Y326450D02*
X653500Y326200D01*
X500500Y388500D02*
X502677D01*
X548777Y434600D01*
X593800D01*
X533728Y368500D02*
X555228Y347000D01*
X492923Y368500D02*
X533728D01*
X528000Y387000D02*
X550000D01*
X575000Y362000D01*
X591000D01*
X520000Y431223D02*
Y447377D01*
X502677Y413900D02*
X520000Y431223D01*
X653500Y326200D02*
Y328500D01*
X629000Y353000D02*
X653500Y328500D01*
X629000Y353000D02*
Y354000D01*
X599000D02*
X611000D01*
X591000Y362000D02*
X599000Y354000D01*
X555228Y347000D02*
X584077D01*
X602700Y328377D01*
Y326200D02*
Y328377D01*
X479000Y382423D02*
X492923Y368500D01*
X500000Y285000D02*
X501722Y286722D01*
X508222D01*
X519500Y298000D01*
Y299000D01*
X526500Y322682D02*
Y326200D01*
Y322682D02*
X535000Y314182D01*
Y300500D02*
Y314182D01*
Y300500D02*
X536500Y299000D01*
X503587Y315913D02*
Y323713D01*
X501100Y326200D02*
X503587Y323713D01*
Y315913D02*
X519500Y300000D01*
Y299000D02*
Y300000D01*
X440000Y254500D02*
X547749Y254500D01*
X401500Y292999D02*
X440000Y254500D01*
X547749Y254500D02*
X571249Y231000D01*
X543048Y206300D02*
X552248Y215500D01*
X486300Y206300D02*
X543048D01*
X543999Y231999D02*
Y233501D01*
X536000Y241500D02*
X543999Y233501D01*
X479251Y274000D02*
X485751Y267500D01*
X451000Y274000D02*
X479251D01*
X485751Y267500D02*
X542364Y267500D01*
X431500Y241500D02*
X512751D01*
X388500Y284500D02*
X431500Y241500D01*
X512751D02*
X512751Y241500D01*
X388500Y284500D02*
Y431500D01*
X517000Y227000D02*
X520000Y224000D01*
X424615Y227000D02*
X517000D01*
X375000Y276615D02*
X424615Y227000D01*
X512751Y241500D02*
X536000D01*
X493023Y193300D02*
X570299D01*
X474500Y174777D02*
X493023Y193300D01*
X523000Y354500D02*
X523500Y355000D01*
X524350Y328350D02*
X526500Y326200D01*
X523000Y329700D02*
X524350Y328350D01*
X225000Y465000D02*
X385000D01*
X210000Y450000D02*
X225000Y465000D01*
X204000Y450000D02*
X210000D01*
X204000Y100000D02*
X205000D01*
X245000Y140000D02*
X420000D01*
X205000Y100000D02*
X245000Y140000D01*
X401500Y292999D02*
Y448500D01*
X385000Y465000D02*
X401500Y448500D01*
X368000Y452000D02*
X388500Y431500D01*
X347000Y452000D02*
X368000D01*
X375000Y276615D02*
Y415000D01*
X360000Y430000D02*
X375000Y415000D01*
X355400Y430000D02*
X360000D01*
X330000Y435000D02*
X347000Y452000D01*
X330000Y430000D02*
Y435000D01*
X420000Y140000D02*
X486300Y206300D01*
X448000Y95000D02*
X449000D01*
X439400Y86400D02*
X448000Y95000D01*
X418100Y86400D02*
X439400D01*
X416900Y85200D02*
X418100Y86400D01*
X479000Y382423D02*
Y419977D01*
X498323Y439300D01*
X500500D01*
X506000Y328000D02*
Y351500D01*
X501100Y326200D02*
X504200D01*
X470000Y61500D02*
X472000D01*
X449500D02*
X470000D01*
X506000Y354500D02*
X506500Y355000D01*
X474500Y139000D02*
Y174777D01*
Y137500D02*
Y139000D01*
X450000Y113000D02*
X474500Y137500D01*
X449000Y113000D02*
X450000D01*
X470000Y61500D02*
Y65000D01*
X490200Y85200D02*
X493100D01*
X470000Y65000D02*
X490200Y85200D01*
X492800Y110900D02*
X493100Y110600D01*
X492800Y110900D02*
Y134700D01*
X492500Y135000D02*
X492800Y134700D01*
X500500Y464700D02*
X502677D01*
X466000Y362301D02*
X496151Y332151D01*
X466000Y436000D02*
X494700Y464700D01*
X500500D01*
X502677D02*
X520000Y447377D01*
X499600Y413000D02*
X500000D01*
X502000Y463200D02*
Y464000D01*
X498000Y414000D02*
Y415041D01*
X466000Y362301D02*
Y436000D01*
X500500Y413900D02*
X502677D01*
D44*
X650000Y250000D02*
D03*
X25000Y475000D02*
D03*
Y25000D02*
D03*
D45*
X120000Y347500D02*
D03*
Y320000D02*
D03*
X355400Y430000D02*
D03*
X330000D02*
D03*
X304600D02*
D03*
X587000Y299000D02*
D03*
X235000Y80000D02*
D03*
X245000Y170000D02*
D03*
X574999Y198000D02*
D03*
X528000Y387000D02*
D03*
X500000Y285000D02*
D03*
X543999Y231999D02*
D03*
X451000Y274000D02*
D03*
X520000Y224000D02*
D03*
D46*
X80000Y450000D02*
D03*
X204000D02*
D03*
X80000Y400000D02*
D03*
X204000D02*
D03*
X80000Y100000D02*
D03*
X204000D02*
D03*
X80000Y50000D02*
D03*
X204000D02*
D03*
D47*
X80000Y300800D02*
D03*
Y275400D02*
D03*
Y250000D02*
D03*
Y224600D02*
D03*
X254600Y119000D02*
D03*
X356200D02*
D03*
X330800D02*
D03*
X305400D02*
D03*
X280000D02*
D03*
D48*
X80000Y199200D02*
D03*
D49*
X381600Y119000D02*
D03*
D50*
X190000Y203000D02*
D03*
Y297000D02*
D03*
D51*
X120000Y225000D02*
D03*
Y250000D02*
D03*
Y275000D02*
D03*
D52*
X677000Y383800D02*
D03*
Y460000D02*
D03*
X600800D02*
D03*
Y434600D02*
D03*
Y409200D02*
D03*
X677000Y40000D02*
D03*
Y116200D02*
D03*
X600800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
D53*
X600800Y383800D02*
D03*
Y40000D02*
D03*
D54*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
D55*
Y34400D02*
D03*
D56*
X279200Y430000D02*
D03*
D57*
X424300Y464684D02*
D03*
D58*
Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
M02*

View File

@@ -0,0 +1,1099 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=65535*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD10C,0.1524*%
%ADD11C,0.2540*%
%ADD12C,0.2000*%
%ADD13C,0.1500*%
%ADD14C,0.1000*%
%ADD15C,0.1800*%
%ADD16C,0.2500*%
%ADD17C,0.1540*%
G36*
X125490Y58490D02*
Y91510D01*
X158510D01*
Y58490D01*
X125490D01*
D02*
G37*
G36*
Y408490D02*
Y441510D01*
X158510D01*
Y408490D01*
X125490D01*
D02*
G37*
D10*
X202960Y475800D02*
G03*
X192800Y485960I-10160J0D01*
G01*
X154617Y375792D02*
G03*
X154929Y474127I-12617J49208D01*
G01*
X192800Y364040D02*
G03*
X202960Y374200I0J10160D01*
G01*
X154477Y386323D02*
G03*
X154477Y463677I-12477J38677D01*
G01*
X129523D02*
G03*
X129523Y386323I12477J-38677D01*
G01*
X91200Y485960D02*
G03*
X81040Y475800I0J-10160D01*
G01*
X129382Y474208D02*
G03*
X129072Y375873I12617J-49208D01*
G01*
X81040Y374200D02*
G03*
X91200Y364040I10160J0D01*
G01*
X81040Y24200D02*
G03*
X91200Y14040I10160J0D01*
G01*
X129382Y124208D02*
G03*
X129072Y25873I12617J-49208D01*
G01*
X91200Y135960D02*
G03*
X81040Y125800I0J-10160D01*
G01*
X129523Y113677D02*
G03*
X129523Y36323I12477J-38677D01*
G01*
X154477D02*
G03*
X154477Y113677I-12477J38677D01*
G01*
X192800Y14040D02*
G03*
X202960Y24200I0J10160D01*
G01*
X154617Y25792D02*
G03*
X154929Y124127I-12617J49208D01*
G01*
X202960Y125800D02*
G03*
X192800Y135960I-10160J0D01*
G01*
D11*
X411900Y477400D02*
G03*
X411900Y477400I-300J0D01*
G01*
X449700D02*
G03*
X475100Y477400I12700J0D01*
G01*
X67300Y186500D02*
X92700D01*
Y313500D01*
X67300Y186500D02*
Y313500D01*
X92700D01*
X407000Y373000D02*
Y482000D01*
Y373000D02*
X516000D01*
X407000Y482000D02*
X516000D01*
Y373000D02*
Y482000D01*
X332153Y304294D02*
X321996Y299216D01*
X332153Y294137D01*
X321996Y281441D02*
Y286520D01*
X324536Y289059D01*
X329614D01*
X332153Y286520D01*
Y281441D01*
X329614Y278902D01*
X327075D01*
Y289059D01*
X332153Y273824D02*
X321996D01*
X327075D01*
X329614Y271285D01*
X332153Y268745D01*
Y266206D01*
X321996Y258589D02*
X324536D01*
Y256050D01*
X321996D01*
Y258589D01*
Y230658D02*
Y225579D01*
Y228119D01*
X337231D01*
X334692Y230658D01*
X321996Y217962D02*
X324536D01*
Y215423D01*
X321996D01*
Y217962D01*
X334692Y205266D02*
X337231Y202727D01*
Y197649D01*
X334692Y195109D01*
X324536D01*
X321996Y197649D01*
Y202727D01*
X324536Y205266D01*
X334692D01*
X312853Y337303D02*
X297618D01*
Y344921D01*
X300158Y347460D01*
X305236D01*
X307775Y344921D01*
Y337303D01*
X297618Y332225D02*
Y327147D01*
Y329686D01*
X307775D01*
Y332225D01*
X292540Y314451D02*
Y311912D01*
X295079Y309372D01*
X307775D01*
Y316990D01*
X305236Y319529D01*
X300158D01*
X297618Y316990D01*
Y309372D01*
Y304294D02*
Y299216D01*
Y301755D01*
X307775D01*
Y304294D01*
X310314Y289059D02*
X307775D01*
Y291598D01*
Y286520D01*
Y289059D01*
X300158D01*
X297618Y286520D01*
X307775Y276363D02*
Y271285D01*
X305236Y268745D01*
X297618D01*
Y276363D01*
X300158Y278902D01*
X302697Y276363D01*
Y268745D01*
X297618Y263667D02*
Y258589D01*
Y261128D01*
X312853D01*
Y263667D01*
X297618Y250971D02*
X307775Y240814D01*
Y233197D02*
Y228119D01*
X305236Y225579D01*
X297618D01*
Y233197D01*
X300158Y235736D01*
X302697Y233197D01*
Y225579D01*
X297618Y220501D02*
X307775D01*
Y212884D01*
X305236Y210344D01*
X297618D01*
X307775Y202727D02*
Y197649D01*
X305236Y195109D01*
X297618D01*
Y202727D01*
X300158Y205266D01*
X302697Y202727D01*
Y195109D01*
X297618Y190031D02*
Y184953D01*
Y187492D01*
X312853D01*
Y190031D01*
X297618Y174796D02*
Y169718D01*
X300158Y167178D01*
X305236D01*
X307775Y169718D01*
Y174796D01*
X305236Y177335D01*
X300158D01*
X297618Y174796D01*
X292540Y157022D02*
Y154482D01*
X295079Y151943D01*
X307775D01*
Y159561D01*
X305236Y162100D01*
X300158D01*
X297618Y159561D01*
Y151943D01*
X257657Y105196D02*
X255117Y107735D01*
X250039D01*
X247500Y105196D01*
Y102657D01*
X250039Y100118D01*
X255117D01*
X257657Y97578D01*
Y95039D01*
X255117Y92500D01*
X250039D01*
X247500Y95039D01*
X262735Y107735D02*
Y92500D01*
X267813Y97578D01*
X272892Y92500D01*
Y107735D01*
X277970Y89961D02*
X288127D01*
X293205Y92500D02*
Y107735D01*
X300823D01*
X303362Y105196D01*
Y100118D01*
X300823Y97578D01*
X293205D01*
X316058Y107735D02*
X310979D01*
X308440Y105196D01*
Y95039D01*
X310979Y92500D01*
X316058D01*
X318597Y95039D01*
Y105196D01*
X316058Y107735D01*
X323675D02*
Y92500D01*
X328754Y97578D01*
X333832Y92500D01*
Y107735D01*
X349067D02*
X338910D01*
Y92500D01*
X349067D01*
X338910Y100118D02*
X343989D01*
X354146Y92500D02*
Y107735D01*
X361763D01*
X364302Y105196D01*
Y100118D01*
X361763Y97578D01*
X354146D01*
X359224D02*
X364302Y92500D01*
X45000Y260000D02*
X60235D01*
Y252383D01*
X57696Y249843D01*
X52618D01*
X50078Y252383D01*
Y260000D01*
X45000Y244765D02*
Y239687D01*
Y242226D01*
X60235D01*
X57696Y244765D01*
X560157Y303196D02*
X557617Y305735D01*
X552539D01*
X550000Y303196D01*
Y293039D01*
X552539Y290500D01*
X557617D01*
X560157Y293039D01*
X575392Y290500D02*
X565235D01*
X575392Y300657D01*
Y303196D01*
X572853Y305735D01*
X567774D01*
X565235Y303196D01*
X546157Y357196D02*
X543618Y359735D01*
X538539D01*
X536000Y357196D01*
Y347039D01*
X538539Y344500D01*
X543618D01*
X546157Y347039D01*
X551235Y357196D02*
X553774Y359735D01*
X558853D01*
X561392Y357196D01*
Y354657D01*
X558853Y352118D01*
X556313D01*
X558853D01*
X561392Y349578D01*
Y347039D01*
X558853Y344500D01*
X553774D01*
X551235Y347039D01*
X148000Y140000D02*
Y155235D01*
X155618D01*
X158157Y152696D01*
Y147618D01*
X155618Y145078D01*
X148000D01*
X153078D02*
X158157Y140000D01*
X173392Y155235D02*
X168313Y152696D01*
X163235Y147618D01*
Y142539D01*
X165774Y140000D01*
X170853D01*
X173392Y142539D01*
Y145078D01*
X170853Y147618D01*
X163235D01*
X195000Y140000D02*
Y155235D01*
X202617D01*
X205157Y152696D01*
Y147618D01*
X202617Y145078D01*
X195000D01*
X200078D02*
X205157Y140000D01*
X210235Y155235D02*
X220392D01*
Y152696D01*
X210235Y142539D01*
Y140000D01*
X641000Y347000D02*
Y362235D01*
X648617D01*
X651157Y359696D01*
Y354618D01*
X648617Y352078D01*
X641000D01*
X646078D02*
X651157Y347000D01*
X656235D02*
X661313D01*
X658774D01*
Y362235D01*
X656235Y359696D01*
X668931Y347000D02*
X674009D01*
X671470D01*
Y362235D01*
X668931Y359696D01*
X150000Y295000D02*
X165235D01*
Y287383D01*
X162696Y284843D01*
X157618D01*
X155078Y287383D01*
Y295000D01*
X165235Y272147D02*
Y277226D01*
X162696Y279765D01*
X152539D01*
X150000Y277226D01*
Y272147D01*
X152539Y269608D01*
X162696D01*
X165235Y272147D01*
Y264530D02*
Y254373D01*
Y259452D01*
X150000D01*
X157618Y249295D02*
Y239138D01*
X165235Y234060D02*
X150000D01*
X157618D01*
Y223903D01*
X165235D01*
X150000D01*
X162696Y208668D02*
X165235Y211207D01*
Y216285D01*
X162696Y218825D01*
X152539D01*
X150000Y216285D01*
Y211207D01*
X152539Y208668D01*
X157618D01*
Y213746D01*
X614235Y274843D02*
Y285000D01*
X599000D01*
Y274843D01*
X606618Y285000D02*
Y279922D01*
X611696Y259608D02*
X614235Y262147D01*
Y267226D01*
X611696Y269765D01*
X609157D01*
X606618Y267226D01*
Y262147D01*
X604078Y259608D01*
X601539D01*
X599000Y262147D01*
Y267226D01*
X601539Y269765D01*
X599000Y254530D02*
X614235D01*
Y246912D01*
X611696Y244373D01*
X606618D01*
X604078Y246912D01*
Y254530D01*
X611696Y239295D02*
X614235Y236756D01*
Y231677D01*
X611696Y229138D01*
X609157D01*
X606618Y231677D01*
Y234216D01*
Y231677D01*
X604078Y229138D01*
X601539D01*
X599000Y231677D01*
Y236756D01*
X601539Y239295D01*
X599000Y213903D02*
Y224060D01*
X609157Y213903D01*
X611696D01*
X614235Y216442D01*
Y221521D01*
X611696Y224060D01*
X526235Y105382D02*
Y110461D01*
X523696Y113000D01*
X513539D01*
X511000Y110461D01*
Y105382D01*
X513539Y102843D01*
X523696D01*
X526235Y105382D01*
X511000Y97765D02*
X526235D01*
Y90147D01*
X523696Y87608D01*
X518618D01*
X516078Y90147D01*
Y97765D01*
X511000Y82530D02*
X521157D01*
X526235Y77452D01*
X521157Y72373D01*
X511000D01*
X518618D01*
Y82530D01*
X523696Y67295D02*
X526235Y64756D01*
Y59677D01*
X523696Y57138D01*
X521157D01*
X518618Y59677D01*
Y62216D01*
Y59677D01*
X516078Y57138D01*
X513539D01*
X511000Y59677D01*
Y64756D01*
X513539Y67295D01*
X523696Y52060D02*
X526235Y49521D01*
Y44442D01*
X523696Y41903D01*
X521157D01*
X518618Y44442D01*
X516078Y41903D01*
X513539D01*
X511000Y44442D01*
Y49521D01*
X513539Y52060D01*
X516078D01*
X518618Y49521D01*
X521157Y52060D01*
X523696D01*
X518618Y49521D02*
Y44442D01*
X523696Y36825D02*
X526235Y34286D01*
Y29207D01*
X523696Y26668D01*
X513539D01*
X511000Y29207D01*
Y34286D01*
X513539Y36825D01*
X523696D01*
X435000Y132000D02*
Y147235D01*
X442617D01*
X445157Y144696D01*
Y139618D01*
X442617Y137078D01*
X435000D01*
X440078D02*
X445157Y132000D01*
X460392Y147235D02*
X450235D01*
Y139618D01*
X455313Y142157D01*
X457853D01*
X460392Y139618D01*
Y134539D01*
X457853Y132000D01*
X452774D01*
X450235Y134539D01*
X562235Y456183D02*
Y461261D01*
X559696Y463800D01*
X549539D01*
X547000Y461261D01*
Y456183D01*
X549539Y453643D01*
X559696D01*
X562235Y456183D01*
X547000Y448565D02*
X562235D01*
Y440947D01*
X559696Y438408D01*
X554618D01*
X552078Y440947D01*
Y448565D01*
X562235Y433330D02*
Y423173D01*
Y428251D01*
X547000D01*
X544461Y418095D02*
Y407938D01*
X562235Y402860D02*
Y392703D01*
Y397781D01*
X547000D01*
X562235Y387625D02*
X547000Y377468D01*
X562235D02*
X547000Y387625D01*
X470235Y455000D02*
Y444843D01*
X467696D01*
X457539Y455000D01*
X455000D01*
X470235Y429608D02*
Y439765D01*
X462617D01*
X465157Y434687D01*
Y432147D01*
X462617Y429608D01*
X457539D01*
X455000Y432147D01*
Y437226D01*
X457539Y439765D01*
X455000Y416912D02*
X470235D01*
X462617Y424530D01*
Y414373D01*
X470235Y399138D02*
Y409295D01*
X462617D01*
X465157Y404216D01*
Y401677D01*
X462617Y399138D01*
X457539D01*
X455000Y401677D01*
Y406756D01*
X457539Y409295D01*
X455000Y394060D02*
Y388981D01*
Y391521D01*
X470235D01*
X467696Y394060D01*
X562235Y112382D02*
Y117461D01*
X559696Y120000D01*
X549539D01*
X547000Y117461D01*
Y112382D01*
X549539Y109843D01*
X559696D01*
X562235Y112382D01*
X547000Y104765D02*
X562235D01*
Y97147D01*
X559696Y94608D01*
X554618D01*
X552078Y97147D01*
Y104765D01*
X562235Y89530D02*
Y79373D01*
Y84452D01*
X547000D01*
X544461Y74295D02*
Y64138D01*
X547000Y59060D02*
X562235D01*
Y51442D01*
X559696Y48903D01*
X554618D01*
X552078Y51442D01*
Y59060D01*
Y53981D02*
X547000Y48903D01*
X562235Y43825D02*
X547000Y33668D01*
X562235D02*
X547000Y43825D01*
X297617Y405235D02*
X292539D01*
X290000Y402696D01*
Y392539D01*
X292539Y390000D01*
X297617D01*
X300157Y392539D01*
Y402696D01*
X297617Y405235D01*
X305235D02*
Y390000D01*
X315392D01*
X330627Y405235D02*
X320470D01*
Y390000D01*
X330627D01*
X320470Y397617D02*
X325549D01*
X335705Y405235D02*
Y390000D01*
X343323D01*
X345862Y392539D01*
Y402696D01*
X343323Y405235D01*
X335705D01*
X57696Y162343D02*
X60235Y164883D01*
Y169961D01*
X57696Y172500D01*
X55157D01*
X52618Y169961D01*
Y164883D01*
X50078Y162343D01*
X47539D01*
X45000Y164883D01*
Y169961D01*
X47539Y172500D01*
X60235Y157265D02*
X45000D01*
X50078Y152187D01*
X45000Y147108D01*
X60235D01*
X42461Y142030D02*
Y131873D01*
X57696Y116638D02*
X60235Y119177D01*
Y124256D01*
X57696Y126795D01*
X55157D01*
X52618Y124256D01*
Y119177D01*
X50078Y116638D01*
X47539D01*
X45000Y119177D01*
Y124256D01*
X47539Y126795D01*
X60235Y111560D02*
Y101403D01*
Y106481D01*
X45000D01*
Y96325D02*
X55157D01*
X60235Y91246D01*
X55157Y86168D01*
X45000D01*
X52618D01*
Y96325D01*
X45000Y81090D02*
X60235D01*
Y73472D01*
X57696Y70933D01*
X52618D01*
X50078Y73472D01*
Y81090D01*
Y76011D02*
X45000Y70933D01*
X60235Y65855D02*
Y55698D01*
Y60776D01*
X45000D01*
X62696Y434843D02*
X65235Y437383D01*
Y442461D01*
X62696Y445000D01*
X60157D01*
X57618Y442461D01*
Y437383D01*
X55078Y434843D01*
X52539D01*
X50000Y437383D01*
Y442461D01*
X52539Y445000D01*
X65235Y429765D02*
X50000D01*
X55078Y424687D01*
X50000Y419608D01*
X65235D01*
X47461Y414530D02*
Y404373D01*
X50000Y399295D02*
X65235D01*
X60157Y394216D01*
X65235Y389138D01*
X50000D01*
X65235Y376442D02*
Y381521D01*
X62696Y384060D01*
X52539D01*
X50000Y381521D01*
Y376442D01*
X52539Y373903D01*
X62696D01*
X65235Y376442D01*
Y368825D02*
X50000D01*
Y361207D01*
X52539Y358668D01*
X62696D01*
X65235Y361207D01*
Y368825D01*
Y343433D02*
Y353590D01*
X50000D01*
Y343433D01*
X57618Y353590D02*
Y348511D01*
D12*
X466000Y20500D02*
G03*
X444000Y20500I-11000J0D01*
G01*
X310000Y18000D02*
Y72000D01*
X283000Y45000D02*
X337000D01*
X365000Y5000D02*
Y85000D01*
X255000Y5000D02*
X365000D01*
X255000D02*
Y85000D01*
X365000D01*
X125490Y408490D02*
X158510D01*
X125490Y441510D02*
X158510D01*
Y408490D02*
Y441510D01*
X125490Y408490D02*
Y441510D01*
X126760Y364040D02*
X192800D01*
X161050Y405950D02*
Y444050D01*
X126760Y364040D02*
Y370390D01*
X91200Y485960D02*
X192800D01*
X122950Y405950D02*
X161050D01*
X122950Y444050D02*
X161050D01*
X122950Y405950D02*
Y444050D01*
X106440Y370390D02*
X126760D01*
X106440Y364040D02*
Y370390D01*
X91200Y364040D02*
X106440D01*
X209000Y164000D02*
Y176000D01*
X161500Y164000D02*
Y176000D01*
X403000Y20500D02*
Y124500D01*
Y20500D02*
X507000D01*
X403000Y124500D02*
X507000D01*
Y20500D02*
Y124500D01*
X135000Y201000D02*
Y299000D01*
X244999Y201000D02*
Y299000D01*
X91200Y14040D02*
X106440D01*
Y20390D01*
X126760D01*
X122950Y55950D02*
Y94050D01*
X161050D01*
X122950Y55950D02*
X161050D01*
X91200Y135960D02*
X192800D01*
X126760Y14040D02*
Y20390D01*
X161050Y55950D02*
Y94050D01*
X126760Y14040D02*
X192800D01*
X125490Y58490D02*
Y91510D01*
X158510Y58490D02*
Y91510D01*
X125490D02*
X158510D01*
X125490Y58490D02*
X158510D01*
X443000Y104000D02*
X455000D01*
X483500Y133000D02*
Y145000D01*
X620000Y348000D02*
Y360000D01*
D13*
X130800Y285000D02*
G03*
X130800Y285000I-800J0D01*
G01*
X256200Y140000D02*
Y444000D01*
Y140000D02*
X378200D01*
X256200Y444000D02*
X378200D01*
Y140000D02*
Y444000D01*
X141497Y354635D02*
X131500D01*
Y349636D01*
X133166Y347970D01*
X139831D01*
X141497Y349636D01*
Y354635D01*
X136498Y344638D02*
Y337974D01*
X141497Y327135D02*
X131500D01*
Y322136D01*
X133166Y320470D01*
X139831D01*
X141497Y322136D01*
Y327135D01*
X136498Y317138D02*
Y310473D01*
X139831Y313806D02*
X133166D01*
D14*
X191474Y160348D02*
X205190D01*
X212810Y160348D02*
X226526Y160348D01*
X191474D02*
Y179652D01*
X205190D01*
X226526Y160348D02*
Y179652D01*
X212810Y179652D02*
X226526Y179652D01*
X165310Y160348D02*
X179026Y160348D01*
Y179652D01*
X165310Y179652D02*
X179026Y179652D01*
X143974Y160348D02*
X157690D01*
X143974Y179652D02*
X157690D01*
X143974Y160348D02*
Y179652D01*
X545526Y301540D02*
Y309160D01*
Y288840D02*
Y296460D01*
X510474Y309160D02*
X545526D01*
X510474Y301540D02*
Y309160D01*
Y288840D02*
X545526D01*
X510474D02*
Y296460D01*
X532526Y354540D02*
Y362160D01*
Y341840D02*
Y349460D01*
X497474Y362160D02*
X532526D01*
X497474Y354540D02*
Y362160D01*
Y341840D02*
X532526D01*
X497474D02*
Y349460D01*
X459660Y35474D02*
Y70526D01*
X452040Y35474D02*
X459660D01*
X452040Y70526D02*
X459660D01*
X439340Y35474D02*
X446960D01*
X439340Y70526D02*
X446960D01*
X439340Y35474D02*
Y70526D01*
X480160Y35474D02*
Y70526D01*
X472540Y35474D02*
X480160D01*
X472540Y70526D02*
X480160D01*
X459840Y35474D02*
X467460D01*
X459840Y70526D02*
X467460D01*
X459840Y35474D02*
Y70526D01*
X458652Y121526D02*
X458652Y107810D01*
X439348Y121526D02*
X458652D01*
X439348Y107810D02*
X439348Y121526D01*
X458652Y86474D02*
Y100190D01*
X439348Y86474D02*
X458652D01*
X439348D02*
Y100190D01*
X465974Y148652D02*
X479690Y148652D01*
X465974Y129348D02*
Y148652D01*
Y129348D02*
X479690Y129348D01*
X487310Y148652D02*
X501026D01*
Y129348D02*
Y148652D01*
X487310Y129348D02*
X501026D01*
X623810Y344348D02*
X637526Y344348D01*
Y363652D01*
X623810Y363652D02*
X637526Y363652D01*
X602474Y344348D02*
X616190D01*
X602474D02*
Y363652D01*
X616190D01*
D15*
X485000Y158000D02*
Y190000D01*
Y158000D02*
X694000D01*
X485000Y190000D02*
X694000D01*
X484000Y310000D02*
Y342000D01*
Y310000D02*
X694000D01*
X484000Y342000D02*
X694000D01*
Y158000D02*
Y190000D01*
Y310000D02*
Y342000D01*
D16*
X572250Y21000D02*
Y134000D01*
Y21000D02*
X696000D01*
X572250Y134000D02*
X696000D01*
Y21000D02*
Y134000D01*
X572250Y366000D02*
Y477000D01*
Y366000D02*
X696000D01*
X572250Y477000D02*
X696000D01*
Y366000D02*
Y477000D01*
D17*
X477000Y91000D02*
X461765D01*
Y98617D01*
X464304Y101157D01*
X469383D01*
X471922Y98617D01*
Y91000D01*
Y96078D02*
X477000Y101157D01*
Y113853D02*
X461765D01*
X469383Y106235D01*
Y116392D01*
X440664Y82331D02*
X438998Y83997D01*
X435666D01*
X434000Y82331D01*
Y75666D01*
X435666Y74000D01*
X438998D01*
X440664Y75666D01*
X443997Y74000D02*
X447329D01*
X445663D01*
Y83997D01*
X443997Y82331D01*
X452327D02*
X453994Y83997D01*
X457326D01*
X458992Y82331D01*
Y75666D01*
X457326Y74000D01*
X453994D01*
X452327Y75666D01*
Y82331D01*
M02*

View File

@@ -7,28 +7,43 @@ G04 Layer_Color=8421504*
G71*
G01*
G75*
%ADD18R,1.3000X1.5000*%
%ADD19R,1.5000X1.3000*%
%ADD20R,1.4000X1.2000*%
%ADD21R,1.2000X1.4000*%
%ADD18R,2.5000X2.2000*%
%ADD19R,1.2000X1.4000*%
%ADD20R,1.3000X1.5000*%
%ADD21R,1.5000X1.3000*%
%ADD22R,1.4000X1.2000*%
D18*
X523500Y299500D02*
X382500Y45000D02*
D03*
X237500D02*
D03*
D19*
X200000Y170000D02*
D03*
X218000D02*
D03*
X170500D02*
D03*
X152500D02*
D03*
X474500Y139000D02*
D03*
X492500D02*
D03*
X629000Y354000D02*
D03*
X611000D02*
D03*
D20*
X536500Y299000D02*
D03*
X519500D02*
D03*
X523500Y352000D02*
D03*
X506500D02*
D03*
Y352000D02*
D03*
X523500D02*
D03*
X108500Y375000D02*
D03*
X91500D02*
D03*
X108500Y400000D02*
D03*
X91500D02*
D03*
D19*
D21*
X449500Y44500D02*
D03*
Y61500D02*
@@ -37,14 +52,9 @@ X470000Y44500D02*
D03*
Y61500D02*
D03*
D20*
D22*
X449000Y113000D02*
D03*
Y95000D02*
D03*
D21*
X474500Y139000D02*
D03*
X492500D02*
D03*
M02*

View File

@@ -0,0 +1,262 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=8388736*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD23R,2.6500X2.3500*%
%ADD24R,1.3500X1.5500*%
%ADD25R,1.4500X1.6500*%
%ADD26R,1.6500X1.4500*%
%ADD27R,1.5500X1.3500*%
%ADD28C,1.6740*%
%ADD29C,1.8500*%
%ADD30O,2.6000X2.0000*%
%ADD31C,1.6500*%
%ADD32R,1.6500X1.6500*%
%ADD33R,1.6500X1.6500*%
%ADD34C,3.1500*%
%ADD35C,2.1500*%
%ADD36C,1.9500*%
%ADD37R,1.9500X1.9500*%
%ADD38C,1.7500*%
%ADD39R,1.7500X1.7500*%
%ADD40R,1.8500X1.8500*%
%ADD41R,1.7500X1.7500*%
%ADD42C,1.7500*%
D23*
X382500Y45000D02*
D03*
X237500D02*
D03*
D24*
X200000Y170000D02*
D03*
X218000D02*
D03*
X170500D02*
D03*
X152500D02*
D03*
X474500Y139000D02*
D03*
X492500D02*
D03*
X629000Y354000D02*
D03*
X611000D02*
D03*
D25*
X536500Y299000D02*
D03*
X519500D02*
D03*
X523500Y352000D02*
D03*
X506500D02*
D03*
D26*
X449500Y44500D02*
D03*
Y61500D02*
D03*
X470000Y44500D02*
D03*
Y61500D02*
D03*
D27*
X449000Y113000D02*
D03*
Y95000D02*
D03*
D28*
X650000Y250000D02*
D03*
X25000Y475000D02*
D03*
Y25000D02*
D03*
D29*
X120000Y347500D02*
D03*
Y320000D02*
D03*
X355400Y430000D02*
D03*
X330000D02*
D03*
X304600D02*
D03*
X587000Y299000D02*
D03*
X235000Y80000D02*
D03*
X245000Y170000D02*
D03*
X574999Y198000D02*
D03*
X528000Y387000D02*
D03*
X500000Y285000D02*
D03*
X543999Y231999D02*
D03*
X451000Y274000D02*
D03*
X520000Y224000D02*
D03*
D30*
X80000Y450000D02*
D03*
X204000D02*
D03*
X80000Y400000D02*
D03*
X204000D02*
D03*
X80000Y100000D02*
D03*
X204000D02*
D03*
X80000Y50000D02*
D03*
X204000D02*
D03*
D31*
X80000Y300800D02*
D03*
Y275400D02*
D03*
Y250000D02*
D03*
Y224600D02*
D03*
X254600Y119000D02*
D03*
X356200D02*
D03*
X330800D02*
D03*
X305400D02*
D03*
X280000D02*
D03*
D32*
X80000Y199200D02*
D03*
D33*
X381600Y119000D02*
D03*
D34*
X190000Y203000D02*
D03*
Y297000D02*
D03*
D35*
X120000Y225000D02*
D03*
Y250000D02*
D03*
Y275000D02*
D03*
D36*
X677000Y383800D02*
D03*
Y460000D02*
D03*
X600800D02*
D03*
Y434600D02*
D03*
Y409200D02*
D03*
X677000Y40000D02*
D03*
Y116200D02*
D03*
X600800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
D37*
X600800Y383800D02*
D03*
Y40000D02*
D03*
D38*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
D39*
Y34400D02*
D03*
D40*
X279200Y430000D02*
D03*
D41*
X424300Y464684D02*
D03*
D42*
Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
M02*

View File

@@ -0,0 +1,108 @@
M48
;Layer_Color=9474304
;FILE_FORMAT=4:4
METRIC,LZ
;TYPE=PLATED
T1F00S00C0.8000
T2F00S00C0.9000
T3F00S00C1.0000
T4F00S00C1.1000
T5F00S00C1.2000
T6F00S00C2.2000
;TYPE=NON_PLATED
T7F00S00C3.1000
%
T01
X004169Y000344
Y000598
X004931
Y000344
Y000852
Y001106
X004169
Y000852
T02
X00574999Y00198
X00587Y00299
X005Y00285
X00451Y00274
X0052Y00224
X00543999Y00231999
X00528Y00387
X003816Y00119
X003562
X003308
X003054
X0028
X002546
X00235Y0008
X00245Y0017
X0008Y001992
Y002246
Y0025
Y002754
Y003008
X0012Y0032
Y003475
T03
X005773Y001738
X006027
X006281
X006535
X006789
Y003262
X006535
X006281
X006027
X005773
X005519
X005265
X005011
X005005Y003885
Y004139
Y004393
X004243
Y004139
Y003885
X003554Y0043
X0033
X003046
X002792
X005011Y001738
X005265
X005519
X0012Y00225
Y0025
Y00275
X004243Y00464684
X005005Y004647
T04
X006008Y0004
X00677
Y001162
X006008
Y000908
Y000654
Y003838
Y004092
Y004346
X00677Y003838
Y0046
X006008
T05
X0008Y0005
X00204
Y001
Y004
Y0045
X0008
Y004
Y001
T06
X0019Y00203
Y00297
T07
X00025Y00025
X0065Y0025
X00025Y00475
M30

Binary file not shown.

BIN
PCB/Libs/1208YD.PcbLib Normal file

Binary file not shown.

BIN
PCB/Libs/1208YD.SchLib Normal file

Binary file not shown.

BIN
PCB/Libs/MSK12C02.PcbLib Normal file

Binary file not shown.

BIN
PCB/Libs/MSK12C02.SchLib Normal file

Binary file not shown.

5352
PCB/Libs/MSK12C02.step Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
PCB/Libs/POT.SchLib Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -38,23 +38,6 @@ PrefsVaultGUID=
PrefsRevisionGUID=
[Document1]
DocumentPath=..\..\..\..\SSSAlDataBaseLib\SssAccesDatbase.DbLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
AnnotateSuffix=
AnnotateScope=All
AnnotateOrder=-1
DoLibraryUpdate=1
DoDatabaseUpdate=1
ClassGenCCAutoEnabled=1
ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document2]
DocumentPath=Libs\Sensor Light.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -71,7 +54,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=XHSRCRCV
[Document3]
[Document2]
DocumentPath=Libs\ESP32-C3-SuperMini.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -86,9 +69,9 @@ ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=FNFLLWRF
DocumentUniqueId=URAFKFNP
[Document4]
[Document3]
DocumentPath=Libs\ESP32-S3-SuperMini.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -103,9 +86,9 @@ ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=IWYWSUPY
DocumentUniqueId=KNRSSPNM
[Document5]
[Document4]
DocumentPath=Libs\HFBR-1528Z_HFBR-2528Z.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -122,7 +105,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document6]
[Document5]
DocumentPath=OptoTest.PcbDoc
AnnotationEnabled=1
AnnotateStartValue=1
@@ -139,7 +122,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=VJUIGDUR
[Document7]
[Document6]
DocumentPath=OptoTest.SchDoc
AnnotationEnabled=1
AnnotateStartValue=1
@@ -156,7 +139,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=OSZVBCBN
[Document8]
[Document7]
DocumentPath=Libs\ESP32-C3-SuperMini.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -173,7 +156,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=SBGUKPNI
[Document9]
[Document8]
DocumentPath=Libs\ESP32-S3-SuperMini.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -190,7 +173,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=BAPDEFTM
[Document10]
[Document9]
DocumentPath=Libs\Switch Push Botton.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -207,7 +190,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document11]
[Document10]
DocumentPath=Libs\Switch Push Botton.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -224,7 +207,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=ITMPIRQI
[Document12]
[Document11]
DocumentPath=Libs\MOD_OLED_0.91_128x32.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -241,7 +224,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document13]
[Document12]
DocumentPath=Libs\MOD_OLED_0.91_128x32.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -258,7 +241,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=UNSXUFGW
[Document14]
[Document13]
DocumentPath=Libs\SN75451BP.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -273,9 +256,9 @@ ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=LAFSSKWH
DocumentUniqueId=A8G5624N
[Document15]
[Document14]
DocumentPath=Libs\SN75451BP.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -292,7 +275,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document16]
[Document15]
DocumentPath=Libs\J_ARK2.Schlib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -309,7 +292,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=HIEGOULK
[Document17]
[Document16]
DocumentPath=Libs\J_ARK2_2.54.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -326,7 +309,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document18]
[Document17]
DocumentPath=Libs\Sensor.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -343,7 +326,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=SCOMYVDB
[Document19]
[Document18]
DocumentPath=Libs\BPW34.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -360,7 +343,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=DEJBNXAE
[Document20]
[Document19]
DocumentPath=Libs\OPA380.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -377,7 +360,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=TPLFYPML
[Document21]
[Document20]
DocumentPath=Libs\OPA380.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -392,9 +375,9 @@ ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=A8G5624N
DocumentUniqueId=MBMSOHVF
[Document22]
[Document21]
DocumentPath=Libs\J_ARK3_2.54.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -411,7 +394,7 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[Document23]
[Document22]
DocumentPath=Libs\J_ARK3.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
@@ -426,10 +409,27 @@ ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=WYDOVXHH
DocumentUniqueId=GMSJVYGO
[Document23]
DocumentPath=Libs\POT.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
AnnotateSuffix=
AnnotateScope=All
AnnotateOrder=-1
DoLibraryUpdate=1
DoDatabaseUpdate=1
ClassGenCCAutoEnabled=1
ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=JKPGHLQK
[Document24]
DocumentPath=gerber.Cam
DocumentPath=Libs\POT_RK09D1130C2P.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
@@ -446,7 +446,24 @@ GenerateClassCluster=0
DocumentUniqueId=
[Document25]
DocumentPath=nc_drills.Cam
DocumentPath=Libs\P_HEADER_1x5.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
AnnotateSuffix=
AnnotateScope=All
AnnotateOrder=-1
DoLibraryUpdate=1
DoDatabaseUpdate=1
ClassGenCCAutoEnabled=1
ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=KQQWVKPH
[Document26]
DocumentPath=Libs\P_HEADER_1x5_2.54_ANGLE.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
@@ -462,65 +479,39 @@ DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[GeneratedDocument1]
DocumentPath=Project Outputs for OptoTest\OptoTest.DRR
[Document27]
DocumentPath=Libs\1208YD.PcbLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
AnnotateSuffix=
AnnotateScope=All
AnnotateOrder=-1
DoLibraryUpdate=1
DoDatabaseUpdate=1
ClassGenCCAutoEnabled=1
ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=
[GeneratedDocument2]
DocumentPath=Project Outputs for OptoTest\OptoTest.EXTREP
DItemRevisionGUID=
[GeneratedDocument3]
DocumentPath=Project Outputs for OptoTest\OptoTest.GBL
DItemRevisionGUID=
[GeneratedDocument4]
DocumentPath=Project Outputs for OptoTest\OptoTest.GBO
DItemRevisionGUID=
[GeneratedDocument5]
DocumentPath=Project Outputs for OptoTest\OptoTest.GBP
DItemRevisionGUID=
[GeneratedDocument6]
DocumentPath=Project Outputs for OptoTest\OptoTest.GBS
DItemRevisionGUID=
[GeneratedDocument7]
DocumentPath=Project Outputs for OptoTest\OptoTest.GKO
DItemRevisionGUID=
[GeneratedDocument8]
DocumentPath=Project Outputs for OptoTest\OptoTest.GTL
DItemRevisionGUID=
[GeneratedDocument9]
DocumentPath=Project Outputs for OptoTest\OptoTest.GTO
DItemRevisionGUID=
[GeneratedDocument10]
DocumentPath=Project Outputs for OptoTest\OptoTest.GTP
DItemRevisionGUID=
[GeneratedDocument11]
DocumentPath=Project Outputs for OptoTest\OptoTest.GTS
DItemRevisionGUID=
[GeneratedDocument12]
DocumentPath=Project Outputs for OptoTest\OptoTest.LDP
DItemRevisionGUID=
[GeneratedDocument13]
DocumentPath=Project Outputs for OptoTest\OptoTest.REP
DItemRevisionGUID=
[GeneratedDocument14]
DocumentPath=Project Outputs for OptoTest\OptoTest.RUL
DItemRevisionGUID=
[GeneratedDocument15]
DocumentPath=Project Outputs for OptoTest\OptoTest.TXT
[Document28]
DocumentPath=Libs\1208YD.SchLib
AnnotationEnabled=1
AnnotateStartValue=1
AnnotationIndexControlEnabled=0
AnnotateSuffix=
AnnotateScope=All
AnnotateOrder=-1
DoLibraryUpdate=1
DoDatabaseUpdate=1
ClassGenCCAutoEnabled=1
ClassGenCCAutoRoomEnabled=1
ClassGenNCAutoScope=None
DItemRevisionGUID=
GenerateClassCluster=0
DocumentUniqueId=GVWJKGKK
[Configuration1]
Name=Sources
@@ -641,7 +632,7 @@ OutputDefault20=0
[OutputGroup2]
Name=Simulator Outputs
Description=
TargetPrinter=Microsoft Print to PDF
TargetPrinter=Adobe PDF
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
[OutputGroup3]

Binary file not shown.

View File

@@ -1,18 +0,0 @@
G04:AMPARAMS|DCode=41|XSize=2.3mm|YSize=1.8mm|CornerRadius=0.225mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=90.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD41*
21,1,2.3000,1.3500,0,0,90.0*
21,1,1.8500,1.8000,0,0,90.0*
1,1,0.4500,0.6750,0.9250*
1,1,0.4500,0.6750,-0.9250*
1,1,0.4500,-0.6750,-0.9250*
1,1,0.4500,-0.6750,0.9250*
%
G04:AMPARAMS|DCode=42|XSize=2.45mm|YSize=1.95mm|CornerRadius=0.3mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=90.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD42*
21,1,2.4500,1.3500,0,0,90.0*
21,1,1.8500,1.9500,0,0,90.0*
1,1,0.6000,0.6750,0.9250*
1,1,0.6000,0.6750,-0.9250*
1,1,0.6000,-0.6750,-0.9250*
1,1,0.6000,-0.6750,0.9250*
%

View File

@@ -1,17 +0,0 @@
----------------------------------------------------------------------------------------------------------------------------------
NCDrill File Report For: OptoTest.PcbDoc 09.08.2026 13:58:41
----------------------------------------------------------------------------------------------------------------------------------
Layer Pair : Top Layer to Bottom Layer
ASCII RoundHoles File : OptoTest.TXT
Tool Hole Size Hole Tolerance Hole Type Hole Count Plated Tool Travel
----------------------------------------------------------------------------------------------------------------------------------
T1 0.9mm (35mil) Round 4 PTH 0.00mm (0.00inch)
T2 1.3mm (51mil) Round 57 PTH 0.00mm (0.00inch)
T3 2mm (79mil) Round 8 PTH 0.00mm (0.00inch)
T4 3.1mm (122mil) Round 4 NPTH 0.00mm (0.00inch)
----------------------------------------------------------------------------------------------------------------------------------
Totals 73
Total Processing Time (hh:mm:ss) : 00:00:00

View File

@@ -1,18 +0,0 @@
------------------------------------------------------------------------------------------
Gerber File Extension Report For: OptoTest.GBR 09.08.2026 13:57:58
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
Layer Extension Layer Description
------------------------------------------------------------------------------------------
.GTO Top Overlay
.GTP Top Paste
.GTS Top Solder
.GTL Top Layer
.GBL Bottom Layer
.GBS Bottom Solder
.GBP Bottom Paste
.GBO Bottom Overlay
.GKO Keep-Out Layer
------------------------------------------------------------------------------------------

View File

@@ -1,1905 +0,0 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Physical_Order=3*
G04 Layer_Color=16711680*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD18R,1.3000X1.5000*%
%ADD20R,1.4000X1.2000*%
%ADD21R,1.2000X1.4000*%
%ADD33C,0.8000*%
%ADD34O,2.1000X2.0000*%
%ADD35C,2.1000*%
%ADD36R,2.1000X2.1000*%
%ADD37R,2.1000X2.1000*%
%ADD38C,2.8000*%
%ADD39C,1.5240*%
%ADD40C,1.7000*%
G04:AMPARAMS|DCode=41|XSize=2.3mm|YSize=1.8mm|CornerRadius=0.225mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=90.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD41*
21,1,2.3000,1.3500,0,0,90.0*
21,1,1.8500,1.8000,0,0,90.0*
1,1,0.4500,0.6750,0.9250*
1,1,0.4500,0.6750,-0.9250*
1,1,0.4500,-0.6750,-0.9250*
1,1,0.4500,-0.6750,0.9250*
%
%ADD41ROUNDEDRECTD41*%
G36*
X690000Y490000D02*
Y341023D01*
X688791Y340097D01*
X687000Y339446D01*
X684860Y340589D01*
X681938Y341476D01*
X678900Y341775D01*
X675861Y341476D01*
X672940Y340589D01*
X670247Y339150D01*
X667887Y337213D01*
X667700Y336986D01*
X664700D01*
X664513Y337213D01*
X662153Y339150D01*
X659460Y340589D01*
X656538Y341476D01*
X653500Y341775D01*
X650462Y341476D01*
X647540Y340589D01*
X644847Y339150D01*
X642487Y337213D01*
X642300Y336986D01*
X639300D01*
X639113Y337213D01*
X636753Y339150D01*
X634060Y340589D01*
X631138Y341476D01*
X628100Y341775D01*
X625061Y341476D01*
X622140Y340589D01*
X619447Y339150D01*
X617390Y337462D01*
X616203Y336986D01*
X614597D01*
X613410Y337462D01*
X611353Y339150D01*
X608660Y340589D01*
X605738Y341476D01*
X602700Y341775D01*
X599661Y341476D01*
X596740Y340589D01*
X594047Y339150D01*
X591687Y337213D01*
X591500Y336986D01*
X588500D01*
X588313Y337213D01*
X585953Y339150D01*
X583260Y340589D01*
X580339Y341476D01*
X577300Y341775D01*
X574262Y341476D01*
X571340Y340589D01*
X568647Y339150D01*
X566287Y337213D01*
X566100Y336986D01*
X563100D01*
X562913Y337213D01*
X560553Y339150D01*
X557860Y340589D01*
X554939Y341476D01*
X551900Y341775D01*
X548862Y341476D01*
X548854Y341473D01*
X547264Y344126D01*
X550263Y347125D01*
X587203D01*
X589552Y347435D01*
X591742Y348341D01*
X593622Y349784D01*
X600419Y356581D01*
X601861Y358461D01*
X602768Y360650D01*
X603078Y363000D01*
Y368300D01*
X609300D01*
Y380300D01*
X593800D01*
Y387300D01*
X609300D01*
Y399300D01*
X609300D01*
X607687Y402300D01*
X608189Y403240D01*
X608936Y405700D01*
X593800D01*
Y412700D01*
X608936D01*
X608189Y415160D01*
X606750Y417853D01*
X604946Y420051D01*
X604816Y420279D01*
X604958Y423942D01*
X606832Y426226D01*
X608225Y428832D01*
X609083Y431660D01*
X609373Y434600D01*
X609083Y437541D01*
X608225Y440368D01*
X606832Y442974D01*
X604958Y445258D01*
X604816Y448921D01*
X604946Y449149D01*
X606750Y451347D01*
X608189Y454040D01*
X609076Y456962D01*
X609375Y460000D01*
X609076Y463038D01*
X608189Y465960D01*
X606750Y468653D01*
X604813Y471013D01*
X602453Y472950D01*
X599760Y474389D01*
X596838Y475276D01*
X593800Y475575D01*
X590761Y475276D01*
X587840Y474389D01*
X585147Y472950D01*
X585005Y472833D01*
X582000Y475838D01*
Y487000D01*
X542000D01*
Y463000D01*
X545028D01*
X545139Y462733D01*
X546581Y460853D01*
X551663Y455772D01*
X550515Y453000D01*
X542000D01*
Y437838D01*
X518997Y414835D01*
X515873Y415953D01*
X515776Y416938D01*
X514889Y419860D01*
X513450Y422553D01*
X511513Y424913D01*
X511286Y425100D01*
Y428100D01*
X511513Y428287D01*
X513450Y430647D01*
X514889Y433340D01*
X515776Y436261D01*
X516075Y439300D01*
X515776Y442338D01*
X514889Y445260D01*
X513450Y447953D01*
X511513Y450313D01*
X511286Y450500D01*
Y453500D01*
X511513Y453687D01*
X513450Y456047D01*
X514889Y458740D01*
X515776Y461661D01*
X516075Y464700D01*
X515776Y467738D01*
X514889Y470660D01*
X513450Y473353D01*
X511513Y475713D01*
X509153Y477650D01*
X506460Y479089D01*
X503539Y479976D01*
X500500Y480275D01*
X497461Y479976D01*
X494540Y479089D01*
X491847Y477650D01*
X489487Y475713D01*
X487550Y473353D01*
X486110Y470660D01*
X485224Y467738D01*
X484925Y464700D01*
X485224Y461661D01*
X486110Y458740D01*
X487550Y456047D01*
X489487Y453687D01*
X489714Y453500D01*
Y450500D01*
X489487Y450313D01*
X487550Y447953D01*
X486110Y445260D01*
X485224Y442338D01*
X484925Y439300D01*
X485224Y436261D01*
X486110Y433340D01*
X487550Y430647D01*
X489487Y428287D01*
X489714Y428100D01*
Y425100D01*
X489487Y424913D01*
X487550Y422553D01*
X486110Y419860D01*
X485224Y416938D01*
X484925Y413900D01*
X485224Y410861D01*
X486110Y407939D01*
X487550Y405247D01*
X489487Y402887D01*
X489714Y402700D01*
Y399700D01*
X489487Y399513D01*
X487550Y397153D01*
X486110Y394460D01*
X485224Y391538D01*
X484925Y388500D01*
X485224Y385461D01*
X486110Y382539D01*
X487550Y379847D01*
X489487Y377487D01*
X491847Y375550D01*
X494540Y374110D01*
X497461Y373224D01*
X500500Y372925D01*
X503539Y373224D01*
X506460Y374110D01*
X509153Y375550D01*
X511513Y377487D01*
X513450Y379847D01*
X514889Y382539D01*
X515776Y385461D01*
X515828Y385990D01*
X539728Y409891D01*
X542500Y408743D01*
Y395500D01*
X542500Y392500D01*
X542500D01*
Y392500D01*
X542500D01*
Y386124D01*
X541581Y385419D01*
X497454Y341291D01*
X495140Y340589D01*
X494182Y340078D01*
X200760D01*
X128241Y412597D01*
X129831Y415249D01*
X131561Y414724D01*
X134600Y414425D01*
X137639Y414724D01*
X140560Y415611D01*
X143253Y417050D01*
X145613Y418987D01*
X145800Y419215D01*
X148800D01*
X148987Y418987D01*
X151347Y417050D01*
X154040Y415611D01*
X156961Y414724D01*
X160000Y414425D01*
X163039Y414724D01*
X165960Y415611D01*
X168653Y417050D01*
X171013Y418987D01*
X172950Y421347D01*
X174389Y424040D01*
X175276Y426962D01*
X175575Y430000D01*
X175276Y433038D01*
X174389Y435960D01*
X172950Y438653D01*
X171013Y441013D01*
X168653Y442950D01*
X165960Y444389D01*
X163039Y445276D01*
X160000Y445575D01*
X156961Y445276D01*
X154040Y444389D01*
X151347Y442950D01*
X148987Y441013D01*
X148800Y440786D01*
X145800D01*
X145613Y441013D01*
X143253Y442950D01*
X140560Y444389D01*
X137639Y445276D01*
X134600Y445575D01*
X131561Y445276D01*
X128640Y444389D01*
X125947Y442950D01*
X123587Y441013D01*
X123400Y440786D01*
X120400D01*
X120213Y441013D01*
X117853Y442950D01*
X115160Y444389D01*
X112239Y445276D01*
X109200Y445575D01*
X106161Y445276D01*
X103240Y444389D01*
X102300Y443887D01*
X99300Y445500D01*
Y445500D01*
X87300D01*
Y430000D01*
Y414500D01*
X88743D01*
X89891Y411728D01*
X32481Y354319D01*
X31039Y352439D01*
X30132Y350249D01*
X29822Y347900D01*
Y93936D01*
X30132Y91587D01*
X31039Y89397D01*
X32481Y87517D01*
X37167Y82831D01*
X37167Y82831D01*
X39048Y81389D01*
X41237Y80482D01*
X43586Y80172D01*
X70198D01*
X72937Y78000D01*
Y71250D01*
X87000D01*
Y66250D01*
X72937D01*
Y59500D01*
X73186Y57607D01*
X73917Y55844D01*
X75079Y54329D01*
X76594Y53167D01*
X77922Y52617D01*
Y46935D01*
X76050Y44653D01*
X74611Y41960D01*
X73864Y39500D01*
X89000D01*
Y36000D01*
X92500D01*
Y20864D01*
X94960Y21611D01*
X97653Y23050D01*
X100013Y24987D01*
X100200Y25215D01*
X103200D01*
X103387Y24987D01*
X105747Y23050D01*
X108440Y21611D01*
X111362Y20724D01*
X114400Y20425D01*
X117438Y20724D01*
X120360Y21611D01*
X123053Y23050D01*
X125413Y24987D01*
X125600Y25215D01*
X128600D01*
X128787Y24987D01*
X131147Y23050D01*
X133840Y21611D01*
X136762Y20724D01*
X139800Y20425D01*
X142838Y20724D01*
X145760Y21611D01*
X148453Y23050D01*
X150813Y24987D01*
X152750Y27347D01*
X154189Y30040D01*
X155076Y32961D01*
X155375Y36000D01*
X155076Y39039D01*
X154911Y39581D01*
X155259Y40422D01*
X179228Y64391D01*
X182000Y63243D01*
Y50000D01*
Y31000D01*
Y26500D01*
X194000D01*
Y24000D01*
X196500D01*
Y13000D01*
X206000D01*
Y14922D01*
X230000D01*
X232349Y15232D01*
X234539Y16139D01*
X236419Y17581D01*
X250616Y31778D01*
X252275Y31275D01*
X252500Y31253D01*
Y46500D01*
X237253D01*
X237275Y46275D01*
X237778Y44616D01*
X226240Y33078D01*
X206000D01*
Y50000D01*
Y54222D01*
X206077Y54232D01*
X208267Y55139D01*
X210147Y56581D01*
X239271Y85705D01*
X239533Y85877D01*
X240424Y86064D01*
X242954Y86042D01*
X243234Y85897D01*
X245393Y84126D01*
X248694Y82361D01*
X252275Y81275D01*
X256000Y80908D01*
X259725Y81275D01*
X263306Y82361D01*
X266607Y84126D01*
X269500Y86500D01*
X271874Y89393D01*
X273639Y92694D01*
X274725Y96275D01*
X275092Y100000D01*
X274725Y103725D01*
X273639Y107306D01*
X271874Y110607D01*
X269500Y113500D01*
X266607Y115874D01*
X263306Y117639D01*
X259725Y118725D01*
X259319Y118765D01*
X258200Y121890D01*
X318233Y181922D01*
X419000D01*
X421349Y182232D01*
X423539Y183139D01*
X425419Y184581D01*
X455422Y214585D01*
X458422Y213342D01*
Y168078D01*
X351000D01*
X348651Y167768D01*
X346461Y166861D01*
X344581Y165419D01*
X344581Y165419D01*
X332581Y153419D01*
X331139Y151539D01*
X330232Y149349D01*
X329922Y147000D01*
Y33000D01*
X330232Y30650D01*
X331139Y28461D01*
X332581Y26581D01*
X339581Y19581D01*
X341461Y18139D01*
X343651Y17232D01*
X346000Y16922D01*
X408500D01*
X410849Y17232D01*
X413039Y18139D01*
X414271Y19084D01*
X416900Y18825D01*
X419939Y19124D01*
X422860Y20011D01*
X425553Y21450D01*
X427913Y23387D01*
X429850Y25747D01*
X431289Y28440D01*
X432176Y31361D01*
X432475Y34400D01*
X432176Y37438D01*
X431289Y40360D01*
X429850Y43053D01*
X427913Y45413D01*
X427686Y45600D01*
Y48600D01*
X427913Y48787D01*
X429584Y50822D01*
X435000D01*
Y48000D01*
X475000D01*
Y48000D01*
X477600Y47035D01*
Y18900D01*
X508600D01*
Y36030D01*
X511372Y37178D01*
X528968Y19581D01*
X530849Y18139D01*
X533038Y17232D01*
X535387Y16922D01*
X579800D01*
X582150Y17232D01*
X584339Y18139D01*
X586219Y19581D01*
X591138Y24500D01*
X609300D01*
Y40485D01*
X609737Y40922D01*
X618000D01*
X618590Y41000D01*
X632000D01*
Y59000D01*
Y81000D01*
X620838D01*
X609193Y92644D01*
X609076Y93839D01*
X608189Y96760D01*
X606750Y99453D01*
X604813Y101813D01*
X604586Y102000D01*
Y105000D01*
X604813Y105187D01*
X606750Y107547D01*
X608189Y110240D01*
X609076Y113161D01*
X609375Y116200D01*
X609076Y119239D01*
X608189Y122160D01*
X606750Y124853D01*
X604813Y127213D01*
X602453Y129150D01*
X599760Y130589D01*
X596838Y131476D01*
X593800Y131775D01*
X590761Y131476D01*
X587840Y130589D01*
X585147Y129150D01*
X582787Y127213D01*
X581198Y125278D01*
X555060D01*
X524977Y155360D01*
X526340Y158241D01*
X526500Y158225D01*
X529538Y158524D01*
X532460Y159411D01*
X535153Y160850D01*
X537210Y162538D01*
X538397Y163015D01*
X540003D01*
X541190Y162538D01*
X543247Y160850D01*
X545940Y159411D01*
X548862Y158524D01*
X551900Y158225D01*
X554939Y158524D01*
X557860Y159411D01*
X560553Y160850D01*
X562913Y162787D01*
X563100Y163015D01*
X566100D01*
X566287Y162787D01*
X568647Y160850D01*
X571340Y159411D01*
X574262Y158524D01*
X577300Y158225D01*
X580339Y158524D01*
X583260Y159411D01*
X585953Y160850D01*
X588313Y162787D01*
X588500Y163014D01*
X591500D01*
X591687Y162787D01*
X594047Y160850D01*
X596740Y159411D01*
X599661Y158524D01*
X602700Y158225D01*
X605738Y158524D01*
X608660Y159411D01*
X611353Y160850D01*
X613713Y162787D01*
X613900Y163015D01*
X616900D01*
X617087Y162787D01*
X619447Y160850D01*
X622140Y159411D01*
X625061Y158524D01*
X628100Y158225D01*
X631138Y158524D01*
X634060Y159411D01*
X636753Y160850D01*
X639113Y162787D01*
X639300Y163015D01*
X642300D01*
X642487Y162787D01*
X644847Y160850D01*
X647540Y159411D01*
X650462Y158524D01*
X653500Y158225D01*
X656538Y158524D01*
X659460Y159411D01*
X662153Y160850D01*
X664513Y162787D01*
X664700Y163014D01*
X667700D01*
X667887Y162787D01*
X670247Y160850D01*
X672940Y159411D01*
X675861Y158524D01*
X678900Y158225D01*
X681938Y158524D01*
X684860Y159411D01*
X687000Y160554D01*
X688791Y159903D01*
X690000Y158977D01*
Y10000D01*
X70533D01*
X68786Y12439D01*
X69044Y13198D01*
X70208Y19048D01*
X70598Y25000D01*
X70208Y30952D01*
X69044Y36802D01*
X67127Y42449D01*
X64489Y47799D01*
X61175Y52758D01*
X57242Y57242D01*
X52758Y61175D01*
X47799Y64489D01*
X42449Y67127D01*
X36802Y69044D01*
X30952Y70208D01*
X25000Y70598D01*
X19048Y70208D01*
X13198Y69044D01*
X12438Y68786D01*
X10000Y70533D01*
X10000Y429467D01*
X12439Y431214D01*
X13198Y430956D01*
X19048Y429793D01*
X25000Y429402D01*
X30952Y429793D01*
X36802Y430956D01*
X42449Y432873D01*
X47799Y435511D01*
X52758Y438825D01*
X57242Y442758D01*
X61175Y447242D01*
X64489Y452201D01*
X67127Y457551D01*
X69044Y463199D01*
X70208Y469048D01*
X70598Y475000D01*
X70208Y480952D01*
X69044Y486801D01*
X68786Y487561D01*
X70533Y490000D01*
X690000Y490000D01*
D02*
G37*
G36*
X458732Y149151D02*
X459639Y146961D01*
X461081Y145081D01*
X480081Y126081D01*
X481487Y125002D01*
X482055Y122371D01*
X482074Y121927D01*
X481919Y121409D01*
X480150Y119253D01*
X478711Y116560D01*
X477964Y114100D01*
X493100D01*
X508236D01*
X507981Y114938D01*
X510634Y116528D01*
X534563Y92599D01*
X533415Y89828D01*
X532522D01*
X532522Y89828D01*
X530173Y89518D01*
X527983Y88611D01*
X526103Y87169D01*
X526103Y87169D01*
X520581Y81647D01*
X519138Y79767D01*
X518232Y77577D01*
X518090Y76500D01*
X514000D01*
Y64145D01*
X511228Y62997D01*
X510494Y63731D01*
X508614Y65174D01*
X507531Y65622D01*
X507489Y65760D01*
X506050Y68453D01*
X504113Y70813D01*
X503886Y71000D01*
Y74000D01*
X504113Y74187D01*
X506050Y76547D01*
X507489Y79240D01*
X508236Y81700D01*
X493100D01*
Y88700D01*
X508236D01*
X507489Y91160D01*
X506050Y93853D01*
X504113Y96213D01*
X503886Y96400D01*
Y99400D01*
X504113Y99587D01*
X506050Y101947D01*
X507489Y104640D01*
X508236Y107100D01*
X493100D01*
X477964D01*
X478711Y104640D01*
X480150Y101947D01*
X482087Y99587D01*
X482314Y99400D01*
Y96400D01*
X482087Y96213D01*
X480150Y93853D01*
X478711Y91160D01*
X478000Y88818D01*
X475000Y89263D01*
Y97500D01*
X435000D01*
Y89263D01*
X432000Y88818D01*
X431289Y91160D01*
X429850Y93853D01*
X427913Y96213D01*
X427686Y96400D01*
Y99400D01*
X427913Y99587D01*
X429850Y101947D01*
X431289Y104640D01*
X432176Y107562D01*
X432475Y110600D01*
X432176Y113638D01*
X431289Y116560D01*
X429850Y119253D01*
X427913Y121613D01*
X425553Y123550D01*
X422860Y124989D01*
X419939Y125876D01*
X416900Y126175D01*
X413862Y125876D01*
X410940Y124989D01*
X408247Y123550D01*
X405887Y121613D01*
X403950Y119253D01*
X402511Y116560D01*
X401624Y113638D01*
X401325Y110600D01*
X401624Y107562D01*
X402511Y104640D01*
X403950Y101947D01*
X405887Y99587D01*
X406115Y99400D01*
Y96400D01*
X405887Y96213D01*
X403950Y93853D01*
X402511Y91160D01*
X401624Y88238D01*
X401325Y85200D01*
X401624Y82162D01*
X402511Y79240D01*
X403950Y76547D01*
X405887Y74187D01*
X406115Y74000D01*
Y71000D01*
X405887Y70813D01*
X403950Y68453D01*
X402511Y65760D01*
X401624Y62839D01*
X401325Y59800D01*
X401624Y56761D01*
X402511Y53840D01*
X403950Y51147D01*
X405887Y48787D01*
X406115Y48600D01*
Y45600D01*
X405887Y45413D01*
X403950Y43053D01*
X402511Y40360D01*
X401624Y37438D01*
X401392Y35078D01*
X396214D01*
X394795Y38078D01*
X395874Y39393D01*
X397639Y42694D01*
X398725Y46275D01*
X398747Y46500D01*
X380000D01*
X361253D01*
X361275Y46275D01*
X362361Y42694D01*
X364126Y39393D01*
X365205Y38078D01*
X363786Y35078D01*
X349760D01*
X348078Y36760D01*
Y143240D01*
X354760Y149922D01*
X458630D01*
X458732Y149151D01*
D02*
G37*
%LPC*%
G36*
X673500Y475136D02*
Y463500D01*
X685136D01*
X684389Y465960D01*
X682950Y468653D01*
X681013Y471013D01*
X678653Y472950D01*
X675960Y474389D01*
X673500Y475136D01*
D02*
G37*
G36*
X666500Y475136D02*
X664040Y474389D01*
X661347Y472950D01*
X658987Y471013D01*
X657050Y468653D01*
X655611Y465960D01*
X654864Y463500D01*
X666500D01*
Y475136D01*
D02*
G37*
G36*
X439800Y480185D02*
X408800D01*
Y449185D01*
X408800D01*
X410405Y446185D01*
X409911Y445260D01*
X409024Y442338D01*
X408725Y439300D01*
X409024Y436261D01*
X409911Y433340D01*
X411350Y430647D01*
X413287Y428287D01*
X413514Y428100D01*
Y425100D01*
X413287Y424913D01*
X411350Y422553D01*
X409911Y419860D01*
X409024Y416938D01*
X408725Y413900D01*
X409024Y410861D01*
X409911Y407939D01*
X411350Y405247D01*
X413287Y402887D01*
X413514Y402700D01*
Y399700D01*
X413287Y399513D01*
X411350Y397153D01*
X409911Y394460D01*
X409164Y392000D01*
X424300D01*
X439436D01*
X438689Y394460D01*
X437250Y397153D01*
X435313Y399513D01*
X435085Y399700D01*
Y402700D01*
X435313Y402887D01*
X437250Y405247D01*
X438689Y407939D01*
X439576Y410861D01*
X439875Y413900D01*
X439576Y416938D01*
X438689Y419860D01*
X437250Y422553D01*
X435313Y424913D01*
X435085Y425100D01*
Y428100D01*
X435313Y428287D01*
X437250Y430647D01*
X438689Y433340D01*
X439576Y436261D01*
X439875Y439300D01*
X439576Y442338D01*
X438689Y445260D01*
X438195Y446185D01*
X439800Y449185D01*
X439800D01*
Y480185D01*
D02*
G37*
G36*
X666500Y456500D02*
X654864D01*
X655611Y454040D01*
X657050Y451347D01*
X658987Y448987D01*
X661347Y447050D01*
X664040Y445611D01*
X666500Y444864D01*
Y456500D01*
D02*
G37*
G36*
X685136D02*
X673500D01*
Y444864D01*
X675960Y445611D01*
X678653Y447050D01*
X681013Y448987D01*
X682950Y451347D01*
X684389Y454040D01*
X685136Y456500D01*
D02*
G37*
G36*
X80300Y445500D02*
X68300D01*
Y433500D01*
X80300D01*
Y445500D01*
D02*
G37*
G36*
X380000Y469092D02*
X376275Y468725D01*
X372694Y467639D01*
X369393Y465874D01*
X366500Y463500D01*
X364126Y460607D01*
X362361Y457306D01*
X361275Y453725D01*
X360908Y450000D01*
X361275Y446275D01*
X362361Y442694D01*
X364126Y439393D01*
X366500Y436500D01*
X369393Y434126D01*
X372694Y432361D01*
X376275Y431275D01*
X380000Y430908D01*
X383725Y431275D01*
X387306Y432361D01*
X390607Y434126D01*
X393500Y436500D01*
X395874Y439393D01*
X397639Y442694D01*
X398725Y446275D01*
X399092Y450000D01*
X398725Y453725D01*
X397639Y457306D01*
X395874Y460607D01*
X393500Y463500D01*
X390607Y465874D01*
X387306Y467639D01*
X383725Y468725D01*
X380000Y469092D01*
D02*
G37*
G36*
X256000D02*
X252275Y468725D01*
X248694Y467639D01*
X245393Y465874D01*
X242500Y463500D01*
X240126Y460607D01*
X238361Y457306D01*
X237275Y453725D01*
X236908Y450000D01*
X237275Y446275D01*
X238361Y442694D01*
X240126Y439393D01*
X242500Y436500D01*
X245393Y434126D01*
X248694Y432361D01*
X252275Y431275D01*
X256000Y430908D01*
X259725Y431275D01*
X263306Y432361D01*
X266607Y434126D01*
X269500Y436500D01*
X271874Y439393D01*
X273639Y442694D01*
X274725Y446275D01*
X275092Y450000D01*
X274725Y453725D01*
X273639Y457306D01*
X271874Y460607D01*
X269500Y463500D01*
X266607Y465874D01*
X263306Y467639D01*
X259725Y468725D01*
X256000Y469092D01*
D02*
G37*
G36*
X80300Y426500D02*
X68300D01*
Y414500D01*
X80300D01*
Y426500D01*
D02*
G37*
G36*
X383500Y418747D02*
Y403500D01*
X398747D01*
X398725Y403725D01*
X397639Y407306D01*
X395874Y410607D01*
X393500Y413500D01*
X390607Y415874D01*
X387306Y417639D01*
X383725Y418725D01*
X383500Y418747D01*
D02*
G37*
G36*
X259500D02*
Y403500D01*
X274747D01*
X274725Y403725D01*
X273639Y407306D01*
X271874Y410607D01*
X269500Y413500D01*
X266607Y415874D01*
X263306Y417639D01*
X259725Y418725D01*
X259500Y418747D01*
D02*
G37*
G36*
X376500D02*
X376275Y418725D01*
X372694Y417639D01*
X369393Y415874D01*
X366500Y413500D01*
X364126Y410607D01*
X362361Y407306D01*
X361275Y403725D01*
X361253Y403500D01*
X376500D01*
Y418747D01*
D02*
G37*
G36*
X252500D02*
X252275Y418725D01*
X248694Y417639D01*
X245393Y415874D01*
X242500Y413500D01*
X240126Y410607D01*
X238361Y407306D01*
X237275Y403725D01*
X237253Y403500D01*
X252500D01*
Y418747D01*
D02*
G37*
G36*
X673500Y398936D02*
Y387300D01*
X685136D01*
X684389Y389760D01*
X682950Y392453D01*
X681013Y394813D01*
X678653Y396750D01*
X675960Y398189D01*
X673500Y398936D01*
D02*
G37*
G36*
X666500Y398936D02*
X664040Y398189D01*
X661347Y396750D01*
X658987Y394813D01*
X657050Y392453D01*
X655611Y389760D01*
X654864Y387300D01*
X666500D01*
Y398936D01*
D02*
G37*
G36*
X398747Y396500D02*
X383500D01*
Y381253D01*
X383725Y381275D01*
X387306Y382361D01*
X390607Y384126D01*
X393500Y386500D01*
X395874Y389393D01*
X397639Y392694D01*
X398725Y396275D01*
X398747Y396500D01*
D02*
G37*
G36*
X274747D02*
X259500D01*
Y381253D01*
X259725Y381275D01*
X263306Y382361D01*
X266607Y384126D01*
X269500Y386500D01*
X271874Y389393D01*
X273639Y392694D01*
X274725Y396275D01*
X274747Y396500D01*
D02*
G37*
G36*
X376500D02*
X361253D01*
X361275Y396275D01*
X362361Y392694D01*
X364126Y389393D01*
X366500Y386500D01*
X369393Y384126D01*
X372694Y382361D01*
X376275Y381275D01*
X376500Y381253D01*
Y396500D01*
D02*
G37*
G36*
X252500D02*
X237253D01*
X237275Y396275D01*
X238361Y392694D01*
X240126Y389393D01*
X242500Y386500D01*
X245393Y384126D01*
X248694Y382361D01*
X252275Y381275D01*
X252500Y381253D01*
Y396500D01*
D02*
G37*
G36*
X439436Y385000D02*
X427800D01*
Y373364D01*
X430260Y374110D01*
X432953Y375550D01*
X435313Y377487D01*
X437250Y379847D01*
X438689Y382539D01*
X439436Y385000D01*
D02*
G37*
G36*
X420800D02*
X409164D01*
X409911Y382539D01*
X411350Y379847D01*
X413287Y377487D01*
X415647Y375550D01*
X418340Y374110D01*
X420800Y373364D01*
Y385000D01*
D02*
G37*
G36*
X666500Y380300D02*
X654864D01*
X655611Y377840D01*
X657050Y375147D01*
X658987Y372787D01*
X661347Y370850D01*
X664040Y369411D01*
X666500Y368664D01*
Y380300D01*
D02*
G37*
G36*
X685136D02*
X673500D01*
Y368664D01*
X675960Y369411D01*
X678653Y370850D01*
X681013Y372787D01*
X682950Y375147D01*
X684389Y377840D01*
X685136Y380300D01*
D02*
G37*
G36*
X673500Y131336D02*
Y119700D01*
X685136D01*
X684389Y122160D01*
X682950Y124853D01*
X681013Y127213D01*
X678653Y129150D01*
X675960Y130589D01*
X673500Y131336D01*
D02*
G37*
G36*
X666500Y131336D02*
X664040Y130589D01*
X661347Y129150D01*
X658987Y127213D01*
X657050Y124853D01*
X655611Y122160D01*
X654864Y119700D01*
X666500D01*
Y131336D01*
D02*
G37*
G36*
Y112700D02*
X654864D01*
X655611Y110240D01*
X657050Y107547D01*
X658987Y105187D01*
X661347Y103250D01*
X664040Y101811D01*
X666500Y101064D01*
Y112700D01*
D02*
G37*
G36*
X685136D02*
X673500D01*
Y101064D01*
X675960Y101811D01*
X678653Y103250D01*
X681013Y105187D01*
X682950Y107547D01*
X684389Y110240D01*
X685136Y112700D01*
D02*
G37*
G36*
X259500Y68747D02*
Y53500D01*
X274747D01*
X274725Y53725D01*
X273639Y57306D01*
X271874Y60607D01*
X269500Y63500D01*
X266607Y65874D01*
X263306Y67639D01*
X259725Y68725D01*
X259500Y68747D01*
D02*
G37*
G36*
X252500D02*
X252275Y68725D01*
X248694Y67639D01*
X245393Y65874D01*
X242500Y63500D01*
X240126Y60607D01*
X238361Y57306D01*
X237275Y53725D01*
X237253Y53500D01*
X252500D01*
Y68747D01*
D02*
G37*
G36*
X673500Y55136D02*
Y43500D01*
X685136D01*
X684389Y45960D01*
X682950Y48653D01*
X681013Y51013D01*
X678653Y52950D01*
X675960Y54389D01*
X673500Y55136D01*
D02*
G37*
G36*
X666500Y55136D02*
X664040Y54389D01*
X661347Y52950D01*
X658987Y51013D01*
X657050Y48653D01*
X655611Y45960D01*
X654864Y43500D01*
X666500D01*
Y55136D01*
D02*
G37*
G36*
X274747Y46500D02*
X259500D01*
Y31253D01*
X259725Y31275D01*
X263306Y32361D01*
X266607Y34126D01*
X269500Y36500D01*
X271874Y39393D01*
X273639Y42694D01*
X274725Y46275D01*
X274747Y46500D01*
D02*
G37*
G36*
X666500Y36500D02*
X654864D01*
X655611Y34040D01*
X657050Y31347D01*
X658987Y28987D01*
X661347Y27050D01*
X664040Y25611D01*
X666500Y24864D01*
Y36500D01*
D02*
G37*
G36*
X685136D02*
X673500D01*
Y24864D01*
X675960Y25611D01*
X678653Y27050D01*
X681013Y28987D01*
X682950Y31347D01*
X684389Y34040D01*
X685136Y36500D01*
D02*
G37*
G36*
X85500Y32500D02*
X73864D01*
X74611Y30040D01*
X76050Y27347D01*
X77987Y24987D01*
X80347Y23050D01*
X83040Y21611D01*
X85500Y20864D01*
Y32500D01*
D02*
G37*
G36*
X191500Y21500D02*
X182000D01*
Y13000D01*
X191500D01*
Y21500D01*
D02*
G37*
G36*
X380000Y119092D02*
X376275Y118725D01*
X372694Y117639D01*
X369393Y115874D01*
X366500Y113500D01*
X364126Y110607D01*
X362361Y107306D01*
X361275Y103725D01*
X360908Y100000D01*
X361275Y96275D01*
X362361Y92694D01*
X364126Y89393D01*
X366500Y86500D01*
X369393Y84126D01*
X372694Y82361D01*
X376275Y81275D01*
X380000Y80908D01*
X383725Y81275D01*
X387306Y82361D01*
X390607Y84126D01*
X393500Y86500D01*
X395874Y89393D01*
X397639Y92694D01*
X398725Y96275D01*
X399092Y100000D01*
X398725Y103725D01*
X397639Y107306D01*
X395874Y110607D01*
X393500Y113500D01*
X390607Y115874D01*
X387306Y117639D01*
X383725Y118725D01*
X380000Y119092D01*
D02*
G37*
G36*
X383500Y68747D02*
Y53500D01*
X398747D01*
X398725Y53725D01*
X397639Y57306D01*
X395874Y60607D01*
X393500Y63500D01*
X390607Y65874D01*
X387306Y67639D01*
X383725Y68725D01*
X383500Y68747D01*
D02*
G37*
G36*
X376500D02*
X376275Y68725D01*
X372694Y67639D01*
X369393Y65874D01*
X366500Y63500D01*
X364126Y60607D01*
X362361Y57306D01*
X361275Y53725D01*
X361253Y53500D01*
X376500D01*
Y68747D01*
D02*
G37*
%LPD*%
D18*
X554000Y380000D02*
D03*
X571000D02*
D03*
X554000Y405000D02*
D03*
X571000D02*
D03*
X542500Y64000D02*
D03*
X525500D02*
D03*
X463500Y85000D02*
D03*
X446500D02*
D03*
D20*
X194000Y24000D02*
D03*
Y42000D02*
D03*
Y61000D02*
D03*
Y79000D02*
D03*
X620000Y52000D02*
D03*
Y70000D02*
D03*
D21*
X571000Y475000D02*
D03*
X553000D02*
D03*
X571000Y441000D02*
D03*
X553000D02*
D03*
X549000Y97000D02*
D03*
X567000D02*
D03*
X446000Y60000D02*
D03*
X464000D02*
D03*
D33*
X548000Y379000D02*
X555000D01*
X467500Y298500D02*
X548000Y379000D01*
X546000Y94000D02*
X550000D01*
X507500Y132500D02*
X546000Y94000D01*
X107580Y68420D02*
Y80080D01*
Y68420D02*
X117000Y59000D01*
X467500Y151500D02*
X486500Y132500D01*
X480500Y166823D02*
X497323Y150000D01*
X500000Y202477D02*
Y224000D01*
Y202477D02*
X525000Y177477D01*
Y204218D02*
Y233000D01*
Y204218D02*
X550000Y179218D01*
X450000Y222000D02*
Y272000D01*
X480500Y166823D02*
Y284634D01*
X467500Y151500D02*
Y298500D01*
X419000Y191000D02*
X450000Y222000D01*
X500867Y305000D02*
X558277D01*
X480500Y284634D02*
X500867Y305000D01*
X314473Y191000D02*
X419000D01*
X233000Y109527D02*
X314473Y191000D01*
X233000Y92272D02*
Y109527D01*
X203728Y63000D02*
X233000Y92272D01*
X196000Y63000D02*
X203728D01*
X194000Y61000D02*
X196000Y63000D01*
X230000Y24000D02*
X256000Y50000D01*
X194000Y24000D02*
X230000D01*
X194000Y42000D02*
Y61000D01*
X146000Y43000D02*
X147000Y44000D01*
Y45000D01*
X179000Y77000D01*
X192000D01*
X194000Y79000D01*
X584000Y405000D02*
X593000Y414000D01*
X594000Y363000D02*
Y386000D01*
X571000Y403000D02*
X572000Y404000D01*
X339000Y33000D02*
X346000Y26000D01*
X339000Y33000D02*
Y147000D01*
X346000Y26000D02*
X408500D01*
X339000Y147000D02*
X351000Y159000D01*
X408500Y26000D02*
X416900Y34400D01*
X351000Y159000D02*
X460000D01*
X575000Y266000D02*
X609000Y300000D01*
X574999Y247999D02*
X575000Y248000D01*
Y266000D01*
X574999Y198000D02*
Y247999D01*
X114696Y42296D02*
Y49696D01*
X525000Y175000D02*
Y177477D01*
X678900Y320900D02*
Y326200D01*
X658000Y300000D02*
X678900Y320900D01*
X609000Y300000D02*
X658000D01*
X504075Y57313D02*
X535387Y26000D01*
X579800D01*
X566708Y47500D02*
X582120Y62913D01*
X532272Y47500D02*
X566708D01*
X493000Y59900D02*
X495587Y57313D01*
X527000Y52772D02*
X532272Y47500D01*
X527000Y52772D02*
Y62500D01*
X525500Y64000D02*
X527000Y62500D01*
X495587Y57313D02*
X504075D01*
X567000Y96000D02*
Y97000D01*
X564000Y93000D02*
X567000Y96000D01*
X564000Y86272D02*
Y93000D01*
X558478Y80750D02*
X564000Y86272D01*
X532522Y80750D02*
X558478D01*
X527000Y75228D02*
X532522Y80750D01*
X527000Y65500D02*
Y75228D01*
X525500Y64000D02*
X527000Y65500D01*
X590282Y90800D02*
X593800D01*
X578482Y79000D02*
X590282Y90800D01*
X542500Y63000D02*
X562000D01*
X463500Y85000D02*
X463750Y84750D01*
Y60250D02*
Y84750D01*
Y60250D02*
X464000Y60000D01*
X464100Y59900D01*
X493000D01*
X579800Y26000D02*
X593800Y40000D01*
X602477Y46500D02*
X605977Y50000D01*
X600300Y46500D02*
X602477D01*
X605977Y50000D02*
X618000D01*
X593800Y40000D02*
X600300Y46500D01*
X618000Y50000D02*
X620000Y52000D01*
X578000Y79000D02*
X578482D01*
X562000Y63000D02*
X578000Y79000D01*
X593800Y90800D02*
X596287Y88313D01*
X600687D01*
X619000Y70000D01*
X620000D01*
X582120Y62913D02*
X591313D01*
X593800Y65400D01*
X551300Y116200D02*
X593800D01*
X517500Y150000D02*
X551300Y116200D01*
X486500Y132500D02*
X507500D01*
X497323Y150000D02*
X517500D01*
X446000Y60000D02*
X446250Y60250D01*
Y84750D01*
X446500Y85000D01*
X416900Y59800D02*
X417000Y59900D01*
X445900D01*
X446000Y60000D01*
X499000Y386000D02*
X502000Y389000D01*
X500500Y388500D02*
X501000Y389000D01*
X499000Y386000D02*
X499000D01*
X526500Y336200D02*
X546503Y356203D01*
X587203D01*
X594000Y363000D01*
X553000Y436000D02*
Y441000D01*
X506000Y389000D02*
X553000Y436000D01*
X502000Y389000D02*
X506000D01*
X109200Y418200D02*
Y430000D01*
X38900Y347900D02*
X109200Y418200D01*
X38900Y93936D02*
Y347900D01*
X197000Y331000D02*
X495000D01*
X109500Y418500D02*
X197000Y331000D01*
X109500Y418500D02*
Y429500D01*
X87000Y68750D02*
Y70000D01*
Y40000D02*
Y68750D01*
X571000Y405000D02*
X584000D01*
X591313Y462487D02*
X593800Y460000D01*
X582513Y462487D02*
X591313D01*
X571000Y474000D02*
X582513Y462487D01*
X571000Y474000D02*
Y475000D01*
X550000Y177500D02*
Y179218D01*
Y177500D02*
X551900Y175600D01*
Y173800D02*
Y175600D01*
X558277Y305000D02*
X577300Y324023D01*
Y326200D01*
X38900Y93936D02*
X43586Y89250D01*
X98410D01*
X107580Y80080D01*
X577300Y331144D02*
Y331200D01*
X116000Y58000D02*
X117000Y59000D01*
X116000Y51000D02*
Y58000D01*
X114696Y49696D02*
X116000Y51000D01*
X112400Y40000D02*
X114696Y42296D01*
X571000Y380000D02*
Y403000D01*
Y405000D02*
X571000Y405000D01*
X570000Y381000D02*
X571000Y380000D01*
X501000Y389000D02*
X502000D01*
X107500Y431700D02*
X109200Y430000D01*
X553000Y467272D02*
Y475000D01*
Y467272D02*
X571000Y449272D01*
Y441000D02*
Y449272D01*
X554000Y415000D02*
X571000Y432000D01*
X554000Y405000D02*
Y415000D01*
X554000Y405000D02*
X554000Y405000D01*
X554000Y384000D02*
Y405000D01*
X554000Y405000D01*
X571000Y432000D02*
Y441000D01*
X594800Y415200D02*
X595000Y415000D01*
D34*
X593800Y434600D02*
D03*
D35*
X139800Y36000D02*
D03*
X114400D02*
D03*
X89000D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
X424300Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
X109200Y430000D02*
D03*
X134600D02*
D03*
X160000D02*
D03*
X670000Y40000D02*
D03*
Y116200D02*
D03*
X593800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
Y409200D02*
D03*
Y460000D02*
D03*
X670000D02*
D03*
Y383800D02*
D03*
X58400Y109000D02*
D03*
X160000D02*
D03*
X134600D02*
D03*
X109200D02*
D03*
X83800D02*
D03*
D36*
X493100Y34400D02*
D03*
X424300Y464684D02*
D03*
X185400Y109000D02*
D03*
D37*
X83800Y430000D02*
D03*
X593800Y40000D02*
D03*
Y383800D02*
D03*
D38*
X380000Y400000D02*
D03*
X256000D02*
D03*
X380000Y450000D02*
D03*
X256000D02*
D03*
X380000Y50000D02*
D03*
X256000D02*
D03*
X380000Y100000D02*
D03*
X256000D02*
D03*
D39*
X25000Y475000D02*
D03*
Y25000D02*
D03*
X375000Y250000D02*
D03*
X650000D02*
D03*
D40*
X500000Y224000D02*
D03*
X525000Y233000D02*
D03*
X450000Y272000D02*
D03*
X574999Y198000D02*
D03*
D41*
X87000Y68750D02*
D03*
X116000D02*
D03*
M02*

View File

@@ -1,358 +0,0 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=32896*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD10C,0.2000*%
%ADD11C,0.2540*%
%ADD14C,0.1000*%
%ADD43C,0.1270*%
D10*
X188000Y33000D02*
X200000D01*
X188000Y70000D02*
X200000D01*
X562000Y469000D02*
Y481000D01*
Y435000D02*
Y447000D01*
X558000Y91000D02*
Y103000D01*
X455000Y54000D02*
Y66000D01*
X614000Y61000D02*
X626000D01*
D11*
X224000Y44000D02*
X208765D01*
Y36383D01*
X211304Y33843D01*
X216382D01*
X218922Y36383D01*
Y44000D01*
Y38922D02*
X224000Y33843D01*
X208765Y28765D02*
Y18608D01*
X211304D01*
X221461Y28765D01*
X224000D01*
Y82000D02*
X208765D01*
Y74383D01*
X211304Y71843D01*
X216382D01*
X218922Y74383D01*
Y82000D01*
Y76922D02*
X224000Y71843D01*
X208765Y56608D02*
X211304Y61687D01*
X216382Y66765D01*
X221461D01*
X224000Y64226D01*
Y59147D01*
X221461Y56608D01*
X218922D01*
X216382Y59147D01*
Y66765D01*
X569843Y68696D02*
X572383Y71235D01*
X577461D01*
X580000Y68696D01*
Y58539D01*
X577461Y56000D01*
X572383D01*
X569843Y58539D01*
X564765Y68696D02*
X562226Y71235D01*
X557147D01*
X554608Y68696D01*
Y66157D01*
X557147Y63618D01*
X554608Y61078D01*
Y58539D01*
X557147Y56000D01*
X562226D01*
X564765Y58539D01*
Y61078D01*
X562226Y63618D01*
X564765Y66157D01*
Y68696D01*
X562226Y63618D02*
X557147D01*
X643000Y65696D02*
X640461Y68235D01*
X635382D01*
X632843Y65696D01*
Y55539D01*
X635382Y53000D01*
X640461D01*
X643000Y55539D01*
Y65696D01*
X467500Y32500D02*
Y47735D01*
X459883D01*
X457343Y45196D01*
Y40118D01*
X459883Y37578D01*
X467500D01*
X462422D02*
X457343Y32500D01*
X442108Y47735D02*
X452265D01*
Y40118D01*
X447187D01*
X452265D01*
Y32500D01*
X454843Y110196D02*
X457383Y112735D01*
X462461D01*
X465000Y110196D01*
Y100039D01*
X462461Y97500D01*
X457383D01*
X454843Y100039D01*
X439608Y112735D02*
X449765D01*
Y105118D01*
X444687D01*
X449765D01*
Y97500D01*
X147696Y69907D02*
X150235Y67368D01*
Y62289D01*
X147696Y59750D01*
X137539D01*
X135000Y62289D01*
Y67368D01*
X137539Y69907D01*
X135000Y74985D02*
Y80063D01*
Y77524D01*
X150235D01*
X147696Y74985D01*
X535500Y89000D02*
Y104235D01*
X527882D01*
X525343Y101696D01*
Y96618D01*
X527882Y94078D01*
X535500D01*
X530422D02*
X525343Y89000D01*
X520265Y101696D02*
X517726Y104235D01*
X512647D01*
X510108Y101696D01*
Y99157D01*
X512647Y96618D01*
X515187D01*
X512647D01*
X510108Y94078D01*
Y91539D01*
X512647Y89000D01*
X517726D01*
X520265Y91539D01*
X540000Y433000D02*
Y448235D01*
X532383D01*
X529843Y445696D01*
Y440617D01*
X532383Y438078D01*
X540000D01*
X534922D02*
X529843Y433000D01*
X514608D02*
X524765D01*
X514608Y443157D01*
Y445696D01*
X517147Y448235D01*
X522226D01*
X524765Y445696D01*
X538000Y470000D02*
Y485235D01*
X530382D01*
X527843Y482696D01*
Y477617D01*
X530382Y475078D01*
X538000D01*
X532922D02*
X527843Y470000D01*
X522765D02*
X517687D01*
X520226D01*
Y485235D01*
X522765Y482696D01*
X528843Y412696D02*
X531382Y415235D01*
X536461D01*
X539000Y412696D01*
Y402539D01*
X536461Y400000D01*
X531382D01*
X528843Y402539D01*
X513608Y415235D02*
X523765D01*
Y407617D01*
X518687Y410157D01*
X516147D01*
X513608Y407617D01*
Y402539D01*
X516147Y400000D01*
X521226D01*
X523765Y402539D01*
X528843Y387696D02*
X531382Y390235D01*
X536461D01*
X539000Y387696D01*
Y377539D01*
X536461Y375000D01*
X531382D01*
X528843Y377539D01*
X516147Y375000D02*
Y390235D01*
X523765Y382617D01*
X513608D01*
D14*
X203652Y15474D02*
X203652Y29190D01*
X184348Y15474D02*
X203652D01*
X184348Y29190D02*
X184348Y15474D01*
X203652Y36810D02*
Y50526D01*
X184348D02*
X203652D01*
X184348Y36810D02*
Y50526D01*
X203652Y52474D02*
X203652Y66190D01*
X184348Y52474D02*
X203652D01*
X184348Y66190D02*
X184348Y52474D01*
X203652Y73810D02*
Y87526D01*
X184348D02*
X203652D01*
X184348Y73810D02*
Y87526D01*
X544974Y390160D02*
X580026D01*
X544974Y382540D02*
Y390160D01*
X580026Y382540D02*
Y390160D01*
X544974Y369840D02*
Y377460D01*
X580026Y369840D02*
Y377460D01*
X544974Y369840D02*
X580026D01*
X544974Y415160D02*
X580026D01*
X544974Y407540D02*
Y415160D01*
X580026Y407540D02*
Y415160D01*
X544974Y394840D02*
Y402460D01*
X580026Y394840D02*
Y402460D01*
X544974Y394840D02*
X580026D01*
X516474Y53840D02*
X551526D01*
Y61460D01*
X516474Y53840D02*
Y61460D01*
X551526Y66540D02*
Y74160D01*
X516474Y66540D02*
Y74160D01*
X551526D01*
X437474Y74840D02*
X472526D01*
Y82460D01*
X437474Y74840D02*
Y82460D01*
X472526Y87540D02*
Y95160D01*
X437474Y87540D02*
Y95160D01*
X472526D01*
X565810Y484652D02*
X579526Y484652D01*
Y465348D02*
Y484652D01*
X565810Y465348D02*
X579526Y465348D01*
X544474Y484652D02*
X558190D01*
X544474Y465348D02*
Y484652D01*
Y465348D02*
X558190D01*
X565810Y450652D02*
X579526Y450652D01*
Y431348D02*
Y450652D01*
X565810Y431348D02*
X579526Y431348D01*
X544474Y450652D02*
X558190D01*
X544474Y431348D02*
Y450652D01*
Y431348D02*
X558190D01*
X540474Y87348D02*
X554190Y87348D01*
X540474Y87348D02*
Y106652D01*
X554190Y106652D01*
X561810Y87348D02*
X575526D01*
Y106652D01*
X561810D02*
X575526D01*
X437474Y50348D02*
X451190Y50348D01*
X437474Y50348D02*
Y69652D01*
X451190Y69652D01*
X458810Y50348D02*
X472526D01*
Y69652D01*
X458810D02*
X472526D01*
X629652Y43474D02*
X629652Y57190D01*
X610348Y43474D02*
X629652D01*
X610348Y57190D02*
X610348Y43474D01*
X629652Y64810D02*
Y78526D01*
X610348D02*
X629652D01*
X610348Y64810D02*
Y78526D01*
D43*
X114500Y86750D02*
X116500D01*
X114500Y83750D02*
Y86750D01*
X90500Y83750D02*
X116500D01*
Y86750D01*
X90500Y53750D02*
X116500D01*
X115500Y83750D02*
Y86750D01*
M02*

View File

@@ -1,75 +0,0 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=128*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD18R,1.3000X1.5000*%
%ADD20R,1.4000X1.2000*%
%ADD21R,1.2000X1.4000*%
G04:AMPARAMS|DCode=41|XSize=2.3mm|YSize=1.8mm|CornerRadius=0.225mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=90.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD41*
21,1,2.3000,1.3500,0,0,90.0*
21,1,1.8500,1.8000,0,0,90.0*
1,1,0.4500,0.6750,0.9250*
1,1,0.4500,0.6750,-0.9250*
1,1,0.4500,-0.6750,-0.9250*
1,1,0.4500,-0.6750,0.9250*
%
%ADD41ROUNDEDRECTD41*%
D18*
X554000Y380000D02*
D03*
X571000D02*
D03*
X554000Y405000D02*
D03*
X571000D02*
D03*
X542500Y64000D02*
D03*
X525500D02*
D03*
X463500Y85000D02*
D03*
X446500D02*
D03*
D20*
X194000Y24000D02*
D03*
Y42000D02*
D03*
Y61000D02*
D03*
Y79000D02*
D03*
X620000Y52000D02*
D03*
Y70000D02*
D03*
D21*
X571000Y475000D02*
D03*
X553000D02*
D03*
X571000Y441000D02*
D03*
X553000D02*
D03*
X549000Y97000D02*
D03*
X567000D02*
D03*
X446000Y60000D02*
D03*
X464000D02*
D03*
D41*
X87000Y68750D02*
D03*
X116000D02*
D03*
M02*

View File

@@ -1,235 +0,0 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=16711935*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD22R,1.4500X1.6500*%
%ADD24R,1.5500X1.3500*%
%ADD25R,1.3500X1.5500*%
%ADD26O,2.2500X2.1500*%
%ADD27C,2.2500*%
%ADD28R,2.2500X2.2500*%
%ADD29R,2.2500X2.2500*%
%ADD30C,3.0000*%
%ADD31C,1.6740*%
%ADD32C,1.8500*%
G04:AMPARAMS|DCode=42|XSize=2.45mm|YSize=1.95mm|CornerRadius=0.3mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=90.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
%AMROUNDEDRECTD42*
21,1,2.4500,1.3500,0,0,90.0*
21,1,1.8500,1.9500,0,0,90.0*
1,1,0.6000,0.6750,0.9250*
1,1,0.6000,0.6750,-0.9250*
1,1,0.6000,-0.6750,-0.9250*
1,1,0.6000,-0.6750,0.9250*
%
%ADD42ROUNDEDRECTD42*%
D22*
X554000Y380000D02*
D03*
X571000D02*
D03*
X554000Y405000D02*
D03*
X571000D02*
D03*
X542500Y64000D02*
D03*
X525500D02*
D03*
X463500Y85000D02*
D03*
X446500D02*
D03*
D24*
X194000Y24000D02*
D03*
Y42000D02*
D03*
Y61000D02*
D03*
Y79000D02*
D03*
X620000Y52000D02*
D03*
Y70000D02*
D03*
D25*
X571000Y475000D02*
D03*
X553000D02*
D03*
X571000Y441000D02*
D03*
X553000D02*
D03*
X549000Y97000D02*
D03*
X567000D02*
D03*
X446000Y60000D02*
D03*
X464000D02*
D03*
D26*
X593800Y434600D02*
D03*
D27*
X139800Y36000D02*
D03*
X114400D02*
D03*
X89000D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
X424300Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
X109200Y430000D02*
D03*
X134600D02*
D03*
X160000D02*
D03*
X670000Y40000D02*
D03*
Y116200D02*
D03*
X593800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
Y409200D02*
D03*
Y460000D02*
D03*
X670000D02*
D03*
Y383800D02*
D03*
X58400Y109000D02*
D03*
X160000D02*
D03*
X134600D02*
D03*
X109200D02*
D03*
X83800D02*
D03*
D28*
X493100Y34400D02*
D03*
X424300Y464684D02*
D03*
X185400Y109000D02*
D03*
D29*
X83800Y430000D02*
D03*
X593800Y40000D02*
D03*
Y383800D02*
D03*
D30*
X380000Y400000D02*
D03*
X256000D02*
D03*
X380000Y450000D02*
D03*
X256000D02*
D03*
X380000Y50000D02*
D03*
X256000D02*
D03*
X380000Y100000D02*
D03*
X256000D02*
D03*
D31*
X25000Y475000D02*
D03*
Y25000D02*
D03*
X375000Y250000D02*
D03*
X650000D02*
D03*
D32*
X500000Y224000D02*
D03*
X525000Y233000D02*
D03*
X450000Y272000D02*
D03*
X574999Y198000D02*
D03*
D42*
X87000Y68750D02*
D03*
X116000D02*
D03*
M02*

View File

@@ -1,431 +0,0 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Physical_Order=1*
G04 Layer_Color=255*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD18R,1.3000X1.5000*%
%ADD19R,1.5000X1.3000*%
%ADD20R,1.4000X1.2000*%
%ADD21R,1.2000X1.4000*%
%ADD33C,0.8000*%
%ADD34O,2.1000X2.0000*%
%ADD35C,2.1000*%
%ADD36R,2.1000X2.1000*%
%ADD37R,2.1000X2.1000*%
%ADD38C,2.8000*%
%ADD39C,1.5240*%
%ADD40C,1.7000*%
D18*
X523500Y299500D02*
D03*
X506500D02*
D03*
Y352000D02*
D03*
X523500D02*
D03*
X108500Y375000D02*
D03*
X91500D02*
D03*
X108500Y400000D02*
D03*
X91500D02*
D03*
D19*
X449500Y44500D02*
D03*
Y61500D02*
D03*
X470000Y44500D02*
D03*
Y61500D02*
D03*
D20*
X449000Y113000D02*
D03*
Y95000D02*
D03*
D21*
X474500Y139000D02*
D03*
X492500D02*
D03*
D33*
X108850Y428850D02*
X110000Y430000D01*
X108850Y375350D02*
Y428850D01*
X476750Y224000D02*
X500000D01*
X427750Y175000D02*
X476750Y224000D01*
X509500Y241500D02*
X518000Y233000D01*
X492751Y241500D02*
X509500D01*
X528249Y254500D02*
X551749Y231000D01*
X487366Y254500D02*
X528249D01*
X487366Y254500D02*
X487366Y254500D01*
X440504Y254500D02*
X487366D01*
X404800Y290204D02*
X440504Y254500D01*
X492751Y241500D02*
X492751Y241500D01*
X471500Y241500D02*
X492751D01*
X518000Y233000D02*
X525000D01*
X551749Y231000D02*
X598477D01*
X506500Y299500D02*
Y324200D01*
Y296500D02*
Y299500D01*
X450000Y272000D02*
X461000Y283000D01*
X612477D01*
X404800Y290204D02*
Y425200D01*
X425000Y195000D02*
X471500Y241500D01*
X493023Y193300D02*
X570299D01*
X533300Y206300D02*
X544000Y217000D01*
X484300Y206300D02*
X533300D01*
X380000Y102000D02*
X484300Y206300D01*
X474500Y174777D02*
X493023Y193300D01*
X612477Y283000D02*
X653500Y324023D01*
Y326200D01*
X310000Y195000D02*
X425000D01*
X598477Y231000D02*
X653500Y175977D01*
Y173800D02*
Y175977D01*
X524350Y328350D02*
X525000Y329000D01*
X523500Y327500D02*
X524350Y328350D01*
X523000Y332700D02*
Y354500D01*
X492423Y369000D02*
X571000D01*
X479000Y382423D02*
Y419977D01*
X498323Y439300D01*
X500500D01*
X479000Y382423D02*
X492423Y369000D01*
X571000D02*
X600787Y339213D01*
X506000Y328000D02*
Y351500D01*
X504200Y326200D02*
X506000Y328000D01*
X501100Y326200D02*
X504200D01*
X523500Y296500D02*
Y325500D01*
X470000Y61500D02*
X472000D01*
X449500D02*
X470000D01*
X523000Y329700D02*
X524350Y328350D01*
X526500Y326200D01*
X523000Y354500D02*
X523500Y355000D01*
X506000Y354500D02*
X506500Y355000D01*
X256000Y50000D02*
X380000D01*
X446000Y92000D02*
X448639Y89361D01*
X446000Y92000D02*
X446000Y92000D01*
X419077Y59800D02*
X448639Y89361D01*
X446000Y92000D02*
Y93000D01*
X448000Y95000D01*
X449000D01*
X474500Y139000D02*
Y174777D01*
Y137500D02*
Y139000D01*
X450000Y113000D02*
X474500Y137500D01*
X449000Y113000D02*
X450000D01*
X416900Y59800D02*
X419077D01*
X587077Y217000D02*
X628100Y175977D01*
Y173800D02*
Y175977D01*
X544000Y217000D02*
X587077D01*
X570299Y193300D02*
X574999Y198000D01*
X470000Y44500D02*
X472000D01*
X449500D02*
X470000D01*
X439400Y34400D02*
X449500Y44500D01*
X424950Y34400D02*
X439400D01*
X470000Y61500D02*
Y65000D01*
X490200Y85200D02*
X493100D01*
X470000Y65000D02*
X490200Y85200D01*
X416900Y34400D02*
X417950Y35450D01*
X492800Y110900D02*
X493100Y110600D01*
X492800Y110900D02*
Y134700D01*
X492500Y135000D02*
X492800Y134700D01*
X502677Y413900D02*
X520000Y431223D01*
X500500Y464700D02*
X502677D01*
X520000Y431223D02*
Y447377D01*
X466000Y362301D02*
X496151Y332151D01*
X466000Y436000D02*
X494700Y464700D01*
X500500D01*
X502677D02*
X520000Y447377D01*
X499600Y413000D02*
X500000D01*
X502000Y463200D02*
Y464000D01*
X498000Y414000D02*
Y415041D01*
X466000Y362301D02*
Y436000D01*
X500500Y413900D02*
X502677D01*
X541444Y388500D02*
X591000Y438056D01*
X380000Y450000D02*
X404800Y425200D01*
X300000Y175000D02*
X427750D01*
X600787Y333113D02*
Y339213D01*
Y333113D02*
X602700Y331200D01*
X152000Y450750D02*
X169000D01*
X136322Y435072D02*
X152000Y450750D01*
X136322Y431722D02*
Y435072D01*
X169000Y450750D02*
X182000Y437750D01*
Y323000D02*
Y437750D01*
Y323000D02*
X310000Y195000D01*
X160000Y315000D02*
X300000Y175000D01*
X160000Y315000D02*
Y430000D01*
X500500Y388500D02*
X541444D01*
X591000Y438056D02*
Y439000D01*
X134600Y430000D02*
X136322Y431722D01*
X380000Y101000D02*
Y102000D01*
X256000Y450000D02*
X380000D01*
X377000Y100000D02*
X378000Y101000D01*
X256000Y100000D02*
X377000D01*
X108500Y375000D02*
X108850Y375350D01*
X91500Y400000D02*
Y418500D01*
Y375000D02*
Y400000D01*
X85000Y425000D02*
X91500Y418500D01*
D34*
X593800Y434600D02*
D03*
D35*
X139800Y36000D02*
D03*
X114400D02*
D03*
X89000D02*
D03*
X678900Y326200D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X678900Y173800D02*
D03*
X653500D02*
D03*
X628100D02*
D03*
X602700D02*
D03*
X577300D02*
D03*
X551900D02*
D03*
X526500D02*
D03*
X501100D02*
D03*
X416900Y34400D02*
D03*
Y59800D02*
D03*
Y85200D02*
D03*
Y110600D02*
D03*
X493100D02*
D03*
Y85200D02*
D03*
Y59800D02*
D03*
X424300Y439300D02*
D03*
Y413900D02*
D03*
Y388500D02*
D03*
X500500D02*
D03*
Y413900D02*
D03*
Y439300D02*
D03*
Y464700D02*
D03*
X109200Y430000D02*
D03*
X134600D02*
D03*
X160000D02*
D03*
X670000Y40000D02*
D03*
Y116200D02*
D03*
X593800D02*
D03*
Y90800D02*
D03*
Y65400D02*
D03*
Y409200D02*
D03*
Y460000D02*
D03*
X670000D02*
D03*
Y383800D02*
D03*
X58400Y109000D02*
D03*
X160000D02*
D03*
X134600D02*
D03*
X109200D02*
D03*
X83800D02*
D03*
D36*
X493100Y34400D02*
D03*
X424300Y464684D02*
D03*
X185400Y109000D02*
D03*
D37*
X83800Y430000D02*
D03*
X593800Y40000D02*
D03*
Y383800D02*
D03*
D38*
X380000Y400000D02*
D03*
X256000D02*
D03*
X380000Y450000D02*
D03*
X256000D02*
D03*
X380000Y50000D02*
D03*
X256000D02*
D03*
X380000Y100000D02*
D03*
X256000D02*
D03*
D39*
X25000Y475000D02*
D03*
Y25000D02*
D03*
X375000Y250000D02*
D03*
X650000D02*
D03*
D40*
X500000Y224000D02*
D03*
X525000Y233000D02*
D03*
X450000Y272000D02*
D03*
X574999Y198000D02*
D03*
M02*

View File

@@ -1,933 +0,0 @@
G04*
G04 #@! TF.GenerationSoftware,Altium Limited,Altium Designer,19.1.9 (167)*
G04*
G04 Layer_Color=65535*
%FSLAX44Y44*%
%MOMM*%
G71*
G01*
G75*
%ADD10C,0.2000*%
%ADD11C,0.2540*%
%ADD12C,0.1524*%
%ADD13C,0.1800*%
%ADD14C,0.1000*%
%ADD15C,0.1500*%
%ADD16C,0.2500*%
%ADD17C,0.1540*%
G36*
X301490Y58490D02*
Y91510D01*
X334510D01*
Y58490D01*
X301490D01*
D02*
G37*
G36*
Y408490D02*
Y441510D01*
X334510D01*
Y408490D01*
X301490D01*
D02*
G37*
D10*
X466000Y20500D02*
G03*
X444000Y20500I-11000J0D01*
G01*
X507000D02*
Y124500D01*
X403000Y20500D02*
X507000D01*
X403000D02*
Y124500D01*
X507000D01*
X443000Y104000D02*
X455000D01*
X483500Y133000D02*
Y145000D01*
X267200Y485960D02*
X368800D01*
X298950Y444050D02*
X337050D01*
Y405950D02*
Y444050D01*
X298950Y405950D02*
X337050D01*
X298950D02*
Y444050D01*
X301490Y441510D02*
X334510D01*
Y408490D02*
Y441510D01*
X301490Y408490D02*
X334510D01*
X301490D02*
Y441510D01*
X302760Y364040D02*
X368800D01*
X267200D02*
X282440D01*
X302760D02*
Y370390D01*
X282440D02*
X302760D01*
X282440Y364040D02*
Y370390D01*
X267200Y135960D02*
X368800D01*
X298950Y94050D02*
X337050D01*
Y55950D02*
Y94050D01*
X298950Y55950D02*
X337050D01*
X298950D02*
Y94050D01*
X301490Y91510D02*
X334510D01*
Y58490D02*
Y91510D01*
X301490Y58490D02*
X334510D01*
X301490D02*
Y91510D01*
X302760Y14040D02*
X368800D01*
X267200D02*
X282440D01*
X302760D02*
Y20390D01*
X282440D02*
X302760D01*
X282440Y14040D02*
Y20390D01*
D11*
X411900Y477400D02*
G03*
X411900Y477400I-300J0D01*
G01*
X449700D02*
G03*
X475100Y477400I12700J0D01*
G01*
X73760Y6294D02*
X155040D01*
X73760Y4250D02*
X155040D01*
X73760Y67750D02*
X155040D01*
X73760Y4250D02*
Y67750D01*
X155040Y4250D02*
Y67750D01*
X516000Y373000D02*
Y482000D01*
X407000Y373000D02*
X516000D01*
X407000D02*
Y482000D01*
X516000D01*
X292153Y297294D02*
X281996Y292216D01*
X292153Y287137D01*
X281996Y274441D02*
Y279520D01*
X284536Y282059D01*
X289614D01*
X292153Y279520D01*
Y274441D01*
X289614Y271902D01*
X287075D01*
Y282059D01*
X292153Y266824D02*
X281996D01*
X287075D01*
X289614Y264285D01*
X292153Y261745D01*
Y259206D01*
X281996Y251589D02*
X284536D01*
Y249050D01*
X281996D01*
Y251589D01*
Y223658D02*
Y218579D01*
Y221119D01*
X297232D01*
X294692Y223658D01*
X281996Y210962D02*
X284536D01*
Y208423D01*
X281996D01*
Y210962D01*
Y188109D02*
Y198266D01*
X292153Y188109D01*
X294692D01*
X297232Y190648D01*
Y195727D01*
X294692Y198266D01*
X272853Y330303D02*
X257618D01*
Y337921D01*
X260158Y340460D01*
X265236D01*
X267775Y337921D01*
Y330303D01*
X257618Y325225D02*
Y320147D01*
Y322686D01*
X267775D01*
Y325225D01*
X252540Y307451D02*
Y304911D01*
X255079Y302372D01*
X267775D01*
Y309990D01*
X265236Y312529D01*
X260158D01*
X257618Y309990D01*
Y302372D01*
Y297294D02*
Y292216D01*
Y294755D01*
X267775D01*
Y297294D01*
X270314Y282059D02*
X267775D01*
Y284598D01*
Y279520D01*
Y282059D01*
X260158D01*
X257618Y279520D01*
X267775Y269363D02*
Y264285D01*
X265236Y261745D01*
X257618D01*
Y269363D01*
X260158Y271902D01*
X262697Y269363D01*
Y261745D01*
X257618Y256667D02*
Y251589D01*
Y254128D01*
X272853D01*
Y256667D01*
X257618Y243971D02*
X267775Y233815D01*
Y226197D02*
Y221119D01*
X265236Y218579D01*
X257618D01*
Y226197D01*
X260158Y228736D01*
X262697Y226197D01*
Y218579D01*
X257618Y213501D02*
X267775D01*
Y205884D01*
X265236Y203344D01*
X257618D01*
X267775Y195727D02*
Y190648D01*
X265236Y188109D01*
X257618D01*
Y195727D01*
X260158Y198266D01*
X262697Y195727D01*
Y188109D01*
X257618Y183031D02*
Y177953D01*
Y180492D01*
X272853D01*
Y183031D01*
X257618Y167796D02*
Y162717D01*
X260158Y160178D01*
X265236D01*
X267775Y162717D01*
Y167796D01*
X265236Y170335D01*
X260158D01*
X257618Y167796D01*
X252540Y150022D02*
Y147483D01*
X255079Y144943D01*
X267775D01*
Y152561D01*
X265236Y155100D01*
X260158D01*
X257618Y152561D01*
Y144943D01*
X59157Y66235D02*
X54078D01*
X56617D01*
Y53539D01*
X54078Y51000D01*
X51539D01*
X49000Y53539D01*
X64235Y51000D02*
X69313D01*
X66774D01*
Y66235D01*
X64235Y63696D01*
X601235Y277843D02*
Y288000D01*
X586000D01*
Y277843D01*
X593618Y288000D02*
Y282922D01*
X598696Y262608D02*
X601235Y265147D01*
Y270226D01*
X598696Y272765D01*
X596157D01*
X593618Y270226D01*
Y265147D01*
X591078Y262608D01*
X588539D01*
X586000Y265147D01*
Y270226D01*
X588539Y272765D01*
X586000Y257530D02*
X601235D01*
Y249912D01*
X598696Y247373D01*
X593618D01*
X591078Y249912D01*
Y257530D01*
X598696Y242295D02*
X601235Y239756D01*
Y234677D01*
X598696Y232138D01*
X596157D01*
X593618Y234677D01*
Y237216D01*
Y234677D01*
X591078Y232138D01*
X588539D01*
X586000Y234677D01*
Y239756D01*
X588539Y242295D01*
X586000Y216903D02*
Y227060D01*
X596157Y216903D01*
X598696D01*
X601235Y219442D01*
Y224520D01*
X598696Y227060D01*
X526235Y105382D02*
Y110461D01*
X523696Y113000D01*
X513539D01*
X511000Y110461D01*
Y105382D01*
X513539Y102843D01*
X523696D01*
X526235Y105382D01*
X511000Y97765D02*
X526235D01*
Y90147D01*
X523696Y87608D01*
X518618D01*
X516078Y90147D01*
Y97765D01*
X511000Y82530D02*
X521157D01*
X526235Y77452D01*
X521157Y72373D01*
X511000D01*
X518618D01*
Y82530D01*
X523696Y67295D02*
X526235Y64756D01*
Y59677D01*
X523696Y57138D01*
X521157D01*
X518618Y59677D01*
Y62216D01*
Y59677D01*
X516078Y57138D01*
X513539D01*
X511000Y59677D01*
Y64756D01*
X513539Y67295D01*
X523696Y52060D02*
X526235Y49521D01*
Y44442D01*
X523696Y41903D01*
X521157D01*
X518618Y44442D01*
X516078Y41903D01*
X513539D01*
X511000Y44442D01*
Y49521D01*
X513539Y52060D01*
X516078D01*
X518618Y49521D01*
X521157Y52060D01*
X523696D01*
X518618Y49521D02*
Y44442D01*
X523696Y36825D02*
X526235Y34286D01*
Y29207D01*
X523696Y26668D01*
X513539D01*
X511000Y29207D01*
Y34286D01*
X513539Y36825D01*
X523696D01*
X435000Y132000D02*
Y147235D01*
X442617D01*
X445157Y144696D01*
Y139618D01*
X442617Y137078D01*
X435000D01*
X440078D02*
X445157Y132000D01*
X460392Y147235D02*
X450235D01*
Y139618D01*
X455313Y142157D01*
X457853D01*
X460392Y139618D01*
Y134539D01*
X457853Y132000D01*
X452774D01*
X450235Y134539D01*
X555235Y456183D02*
Y461261D01*
X552696Y463800D01*
X542539D01*
X540000Y461261D01*
Y456183D01*
X542539Y453643D01*
X552696D01*
X555235Y456183D01*
X540000Y448565D02*
X555235D01*
Y440947D01*
X552696Y438408D01*
X547617D01*
X545078Y440947D01*
Y448565D01*
X555235Y433330D02*
Y423173D01*
Y428251D01*
X540000D01*
X537461Y418095D02*
Y407938D01*
X555235Y402860D02*
Y392703D01*
Y397781D01*
X540000D01*
X555235Y387625D02*
X540000Y377468D01*
X555235D02*
X540000Y387625D01*
X470235Y455000D02*
Y444843D01*
X467696D01*
X457539Y455000D01*
X455000D01*
X470235Y429608D02*
Y439765D01*
X462617D01*
X465157Y434687D01*
Y432147D01*
X462617Y429608D01*
X457539D01*
X455000Y432147D01*
Y437226D01*
X457539Y439765D01*
X455000Y416912D02*
X470235D01*
X462617Y424530D01*
Y414373D01*
X470235Y399138D02*
Y409295D01*
X462617D01*
X465157Y404216D01*
Y401677D01*
X462617Y399138D01*
X457539D01*
X455000Y401677D01*
Y406756D01*
X457539Y409295D01*
X455000Y394060D02*
Y388981D01*
Y391521D01*
X470235D01*
X467696Y394060D01*
X555235Y112382D02*
Y117461D01*
X552696Y120000D01*
X542539D01*
X540000Y117461D01*
Y112382D01*
X542539Y109843D01*
X552696D01*
X555235Y112382D01*
X540000Y104765D02*
X555235D01*
Y97147D01*
X552696Y94608D01*
X547617D01*
X545078Y97147D01*
Y104765D01*
X555235Y89530D02*
Y79373D01*
Y84452D01*
X540000D01*
X537461Y74295D02*
Y64138D01*
X540000Y59060D02*
X555235D01*
Y51442D01*
X552696Y48903D01*
X547617D01*
X545078Y51442D01*
Y59060D01*
Y53981D02*
X540000Y48903D01*
X555235Y43825D02*
X540000Y33668D01*
X555235D02*
X540000Y43825D01*
X135157Y407696D02*
X132618Y410235D01*
X127539D01*
X125000Y407696D01*
Y397539D01*
X127539Y395000D01*
X132618D01*
X135157Y397539D01*
X140235Y410235D02*
X150392D01*
Y407696D01*
X140235Y397539D01*
Y395000D01*
X135157Y382696D02*
X132618Y385235D01*
X127539D01*
X125000Y382696D01*
Y372539D01*
X127539Y370000D01*
X132618D01*
X135157Y372539D01*
X150392Y385235D02*
X145313Y382696D01*
X140235Y377617D01*
Y372539D01*
X142774Y370000D01*
X147853D01*
X150392Y372539D01*
Y375078D01*
X147853Y377617D01*
X140235D01*
X546157Y357196D02*
X543618Y359735D01*
X538539D01*
X536000Y357196D01*
Y347039D01*
X538539Y344500D01*
X543618D01*
X546157Y347039D01*
X551235Y357196D02*
X553774Y359735D01*
X558853D01*
X561392Y357196D01*
Y354657D01*
X558853Y352118D01*
X556313D01*
X558853D01*
X561392Y349578D01*
Y347039D01*
X558853Y344500D01*
X553774D01*
X551235Y347039D01*
X547157Y303696D02*
X544618Y306235D01*
X539539D01*
X537000Y303696D01*
Y293539D01*
X539539Y291000D01*
X544618D01*
X547157Y293539D01*
X562392Y291000D02*
X552235D01*
X562392Y301157D01*
Y303696D01*
X559853Y306235D01*
X554774D01*
X552235Y303696D01*
X122235Y282383D02*
Y287461D01*
X119696Y290000D01*
X109539D01*
X107000Y287461D01*
Y282383D01*
X109539Y279843D01*
X119696D01*
X122235Y282383D01*
Y274765D02*
X107000D01*
Y264608D01*
X122235Y249373D02*
Y259530D01*
X107000D01*
Y249373D01*
X114618Y259530D02*
Y254452D01*
X122235Y244295D02*
X107000D01*
Y236677D01*
X109539Y234138D01*
X119696D01*
X122235Y236677D01*
Y244295D01*
X232696Y119843D02*
X235235Y122382D01*
Y127461D01*
X232696Y130000D01*
X230157D01*
X227617Y127461D01*
Y122382D01*
X225078Y119843D01*
X222539D01*
X220000Y122382D01*
Y127461D01*
X222539Y130000D01*
X235235Y114765D02*
X220000D01*
X225078Y109687D01*
X220000Y104608D01*
X235235D01*
X217461Y99530D02*
Y89373D01*
X232696Y74138D02*
X235235Y76677D01*
Y81756D01*
X232696Y84295D01*
X230157D01*
X227617Y81756D01*
Y76677D01*
X225078Y74138D01*
X222539D01*
X220000Y76677D01*
Y81756D01*
X222539Y84295D01*
X235235Y69060D02*
Y58903D01*
Y63981D01*
X220000D01*
Y53825D02*
X230157D01*
X235235Y48746D01*
X230157Y43668D01*
X220000D01*
X227617D01*
Y53825D01*
X220000Y38590D02*
X235235D01*
Y30972D01*
X232696Y28433D01*
X227617D01*
X225078Y30972D01*
Y38590D01*
Y33511D02*
X220000Y28433D01*
X235235Y23354D02*
Y13198D01*
Y18276D01*
X220000D01*
X232696Y464843D02*
X235235Y467383D01*
Y472461D01*
X232696Y475000D01*
X230157D01*
X227617Y472461D01*
Y467383D01*
X225078Y464843D01*
X222539D01*
X220000Y467383D01*
Y472461D01*
X222539Y475000D01*
X235235Y459765D02*
X220000D01*
X225078Y454687D01*
X220000Y449608D01*
X235235D01*
X217461Y444530D02*
Y434373D01*
X220000Y429295D02*
X235235D01*
X230157Y424216D01*
X235235Y419138D01*
X220000D01*
X235235Y406442D02*
Y411521D01*
X232696Y414060D01*
X222539D01*
X220000Y411521D01*
Y406442D01*
X222539Y403903D01*
X232696D01*
X235235Y406442D01*
Y398825D02*
X220000D01*
Y391207D01*
X222539Y388668D01*
X232696D01*
X235235Y391207D01*
Y398825D01*
Y373433D02*
Y383590D01*
X220000D01*
Y373433D01*
X227617Y383590D02*
Y378511D01*
D12*
X330617Y375792D02*
G03*
X330929Y474127I-12617J49208D01*
G01*
X330477Y386323D02*
G03*
X330477Y463677I-12477J38677D01*
G01*
X305382Y474208D02*
G03*
X305072Y375873I12617J-49208D01*
G01*
X368800Y364040D02*
G03*
X378960Y374200I0J10160D01*
G01*
X257040D02*
G03*
X267200Y364040I10160J0D01*
G01*
Y485960D02*
G03*
X257040Y475800I0J-10160D01*
G01*
X378960D02*
G03*
X368800Y485960I-10160J0D01*
G01*
X305523Y463677D02*
G03*
X305523Y386323I12477J-38677D01*
G01*
X330617Y25792D02*
G03*
X330929Y124127I-12617J49208D01*
G01*
X330477Y36323D02*
G03*
X330477Y113677I-12477J38677D01*
G01*
X305382Y124208D02*
G03*
X305072Y25873I12617J-49208D01*
G01*
X368800Y14040D02*
G03*
X378960Y24200I0J10160D01*
G01*
X257040D02*
G03*
X267200Y14040I10160J0D01*
G01*
Y135960D02*
G03*
X257040Y125800I0J-10160D01*
G01*
X378960D02*
G03*
X368800Y135960I-10160J0D01*
G01*
X305523Y113677D02*
G03*
X305523Y36323I12477J-38677D01*
G01*
D13*
X694000Y158000D02*
Y190000D01*
X485000D02*
X694000D01*
X485000Y158000D02*
Y190000D01*
Y158000D02*
X694000D01*
Y310000D02*
Y342000D01*
X484000D02*
X694000D01*
X484000Y310000D02*
Y342000D01*
Y310000D02*
X694000D01*
D14*
X497474Y309660D02*
X532526D01*
Y302040D02*
Y309660D01*
X497474Y302040D02*
Y309660D01*
X532526Y289340D02*
Y296960D01*
X497474Y289340D02*
Y296960D01*
Y289340D02*
X532526D01*
X497474Y341840D02*
X532526D01*
X497474D02*
Y349460D01*
X532526Y341840D02*
Y349460D01*
X497474Y354540D02*
Y362160D01*
X532526Y354540D02*
Y362160D01*
X497474D02*
X532526D01*
X82474Y385160D02*
X117526D01*
Y377540D02*
Y385160D01*
X82474Y377540D02*
Y385160D01*
X117526Y364840D02*
Y372460D01*
X82474Y364840D02*
Y372460D01*
Y364840D02*
X117526D01*
X82474Y410160D02*
X117526D01*
Y402540D02*
Y410160D01*
X82474Y402540D02*
Y410160D01*
X117526Y389840D02*
Y397460D01*
X82474Y389840D02*
Y397460D01*
Y389840D02*
X117526D01*
X459660Y35474D02*
Y70526D01*
X452040Y35474D02*
X459660D01*
X452040Y70526D02*
X459660D01*
X439340Y35474D02*
X446960D01*
X439340Y70526D02*
X446960D01*
X439340Y35474D02*
Y70526D01*
X480160Y35474D02*
Y70526D01*
X472540Y35474D02*
X480160D01*
X472540Y70526D02*
X480160D01*
X459840Y35474D02*
X467460D01*
X459840Y70526D02*
X467460D01*
X459840Y35474D02*
Y70526D01*
X458652Y121526D02*
X458652Y107810D01*
X439348Y121526D02*
X458652D01*
X439348Y107810D02*
X439348Y121526D01*
X458652Y86474D02*
Y100190D01*
X439348Y86474D02*
X458652D01*
X439348D02*
Y100190D01*
X465974Y148652D02*
X479690Y148652D01*
X465974Y129348D02*
Y148652D01*
Y129348D02*
X479690Y129348D01*
X487310Y148652D02*
X501026D01*
Y129348D02*
Y148652D01*
X487310Y129348D02*
X501026D01*
D15*
X60800Y444000D02*
X182800D01*
Y131000D02*
Y444000D01*
X60800Y131000D02*
X182800D01*
X60800D02*
Y444000D01*
D16*
X565250Y21000D02*
X689000D01*
Y134000D01*
X565250D02*
X689000D01*
X565250Y21000D02*
Y134000D01*
Y366000D02*
Y477000D01*
X689000D01*
Y366000D02*
Y477000D01*
X565250Y366000D02*
X689000D01*
D17*
X477000Y91000D02*
X461765D01*
Y98617D01*
X464304Y101157D01*
X469383D01*
X471922Y98617D01*
Y91000D01*
Y96078D02*
X477000Y101157D01*
Y113853D02*
X461765D01*
X469383Y106235D01*
Y116392D01*
X440664Y82331D02*
X438998Y83997D01*
X435666D01*
X434000Y82331D01*
Y75666D01*
X435666Y74000D01*
X438998D01*
X440664Y75666D01*
X443997Y74000D02*
X447329D01*
X445663D01*
Y83997D01*
X443997Y82331D01*
X452327D02*
X453994Y83997D01*
X457326D01*
X458992Y82331D01*
Y75666D01*
X457326Y74000D01*
X453994D01*
X452327Y75666D01*
Y82331D01*
M02*

Some files were not shown because too many files have changed in this diff Show More