diff --git a/project/ble_peripheral/ble_app_bladder_patch/command/parser.c b/project/ble_peripheral/ble_app_bladder_patch/command/parser.c index 971e1e1..cda563e 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/command/parser.c +++ b/project/ble_peripheral/ble_app_bladder_patch/command/parser.c @@ -390,6 +390,7 @@ static int Cmd_mws(const ParsedCmd *cmd); /* mws? 시리얼 넘버 FDS에 쓰 static int Cmd_mrh(const ParsedCmd *cmd); /* mrh? HW 넘버 FDS에서 읽기 */ static int Cmd_mrs(const ParsedCmd *cmd); /* mrs? 시리얼 넘버 FDS에서 읽기 */ static int Cmd_mfv(const ParsedCmd *cmd); /* mfv? 펌웨어 버전 읽기 */ +static int Cmd_mid(const ParsedCmd *cmd); /* mid? HW 넘버 + 시리얼 넘버 + FW 버전 일괄 읽기 */ static int Cmd_mpz(const ParsedCmd *cmd); /* mpz? BLE 패스키 FDS에 쓰기 */ static int Cmd_mqz(const ParsedCmd *cmd); /* mqz? BLE 패스키 FDS에서 읽기 */ @@ -440,6 +441,7 @@ static CmdEntry g_cmd_table[] = { { "mpz?", true, Cmd_mpz }, { "mqz?", true, Cmd_mqz }, { "mfv?", true, Cmd_mfv }, + { "mid?", true, Cmd_mid }, /* D. 각종 센서 측정 */ { "msn?", true, Cmd_msn }, @@ -677,6 +679,28 @@ static int Cmd_mfv(const ParsedCmd *cmd) return 1; } +/* mid? - HW 넘버 + 시리얼 넘버 + FW 버전 일괄 읽기 + * + * 응답: "rid:" + HW_NO(12) + SERIAL_NO(12) + FIRMWARE_VERSION(12) = 40바이트 = 20워드 + */ +static int Cmd_mid(const ParsedCmd *cmd) +{ + uint8_t *buf = ble_bin_buffer; + (void)cmd; + + memcpy(HW_NO, m_config.hw_no, 12); + memcpy(SERIAL_NO, m_config.serial_no, 12); + + buf[0] = 'r'; buf[1] = 'i'; buf[2] = 'd'; buf[3] = ':'; + memcpy(&buf[4], HW_NO, 12); + memcpy(&buf[16], SERIAL_NO, 12); + memcpy(&buf[28], FIRMWARE_VERSION, 12); + + dr_binary_tx_safe(buf, 20); /* 40바이트 = 20워드 */ + return 1; +} + + /* mpa? - 피에조 초음파 TX/RX 회로 활성화 * * 동작: 피에조 전원 ON → 시스템 초기화 (DAC, MUX, ADC 설정)