코드 정리

This commit is contained in:
2026-06-26 17:20:45 +09:00
parent 6c7fa6d0e6
commit 1a78656c8f
14 changed files with 105 additions and 265 deletions
+7 -54
View File
@@ -109,17 +109,6 @@ static bool piezo_config_validate(const piezo_config_t *cfg)
return true;
}
static void piezo_config_log(const char *prefix, const piezo_config_t *cfg)
{
DBG_PRINTF("%s freq=%u cycles=%u avg=%u delay=%u samples=%u\r\n",
prefix,
cfg->freq,
cfg->cycles,
cfg->avg,
cfg->delay_us,
cfg->samples);
}
const piezo_config_t *piezo_config_get(void)
{
return &g_piezo_config;
@@ -127,13 +116,12 @@ const piezo_config_t *piezo_config_get(void)
int piezo_config_init(void)
{
int err = app_nvs_init(&g_piezo_config, piezo_config_validate, piezo_config_log);
int err = app_nvs_init(&g_piezo_config, piezo_config_validate, NULL);
if (err)
{
return err;
}
piezo_config_log("[CFG] piezo active", &g_piezo_config);
return 0;
}
@@ -309,11 +297,7 @@ static int send_response_imu(const int16_t accel[3], const int16_t gyro[3])
static void send_response_echo(uint8_t session, uint8_t channel, const uint16_t *samples, uint16_t num_samples)
{
/*
* reb: 패킷은 최대 210바이트라서 스택 지역변수로 두면
* mbb?처럼 반복 호출할 때 워커 스택을 꽤 먹는다.
* 현재는 한 번에 하나의 명령만 처리하므로 정적 버퍼를 재사용한다.
*/
/* 정적 버퍼 사용 (한 번에 한 명령만 처리) */
uint8_t *buf = tx_echo_buf;
buf[0] = 'r'; buf[1] = 'e'; buf[2] = 'b'; buf[3] = ':';
@@ -336,10 +320,7 @@ static void send_response_echo(uint8_t session, uint8_t channel, const uint16_t
ble_data_send(buf, payload_len + 2);
}
static void send_response_bundle(uint16_t batt_mv,
const int16_t accel[3],
const int16_t gyro[3],
int16_t temp_cdeg)
static void send_response_bundle(uint16_t batt_mv, const int16_t accel[3], const int16_t gyro[3], int16_t temp_cdeg)
{
uint8_t *buf = tx_bundle_buf;
@@ -389,18 +370,11 @@ static void send_response_rim(const uint8_t *sample_bytes, uint16_t sample_count
buf[payload_len] = (uint8_t)(crc & 0xFF);
buf[payload_len + 1U] = (uint8_t)(crc >> 8);
DBG_PRINTF("[MTB] tx rim samples=%u len=%u\r\n",
sample_count,
(uint16_t)(payload_len + 2U));
DBG_PRINTF("[MTB] tx rim samples=%u len=%u\r\n", sample_count, (uint16_t)(payload_len + 2U));
ble_data_send(buf, (uint16_t)(payload_len + 2U));
}
static void send_response_piezo_config(const char *tag,
uint16_t freq,
uint16_t cycles,
uint16_t avg,
uint16_t delay_us,
uint16_t samples)
static void send_response_piezo_config(const char *tag, uint16_t freq, uint16_t cycles, uint16_t avg, uint16_t delay_us, uint16_t samples)
{
uint8_t *buf = tx_cfg_buf;
@@ -705,7 +679,6 @@ static int cmd_msn(const uint8_t *data, uint8_t data_len)
}
send_response_u16("rsn:", (uint16_t)mv);
DBG_PRINTF("[CMD] msn -> %d mV\r\n", mv);
return 1;
}
@@ -1283,7 +1256,6 @@ static int cmd_mcf(const uint8_t *data, uint8_t data_len)
const piezo_config_t *cfg = piezo_config_get();
send_response_piezo_config("rcf:", cfg->freq, cfg->cycles, cfg->avg, cfg->delay_us, cfg->samples);
piezo_config_log("[CMD] mcf ->", cfg);
return 1;
}
@@ -1297,7 +1269,6 @@ static int cmd_mcs(const uint8_t *data, uint8_t data_len)
if (data_len < 10U)
{
send_response_piezo_config("rcs:", 0xFFFF, 0U, 0U, 0U, 0U);
DBG_PRINTF("[CMD] mcs: insufficient data len=%u\r\n", data_len);
return 1;
}
@@ -1310,7 +1281,6 @@ static int cmd_mcs(const uint8_t *data, uint8_t data_len)
if (!piezo_config_validate(&cfg))
{
send_response_piezo_config("rcs:", 0xFFFF, cfg.cycles, cfg.avg, cfg.delay_us, cfg.samples);
piezo_config_log("[CMD] mcs invalid", &cfg);
return 1;
}
@@ -1319,12 +1289,10 @@ static int cmd_mcs(const uint8_t *data, uint8_t data_len)
if (err)
{
send_response_piezo_config("rcs:", 0xFFFD, cfg.cycles, cfg.avg, cfg.delay_us, cfg.samples);
piezo_config_log("[CMD] mcs save fail", &g_piezo_config);
return 1;
}
send_response_piezo_config("rcs:", g_piezo_config.freq, g_piezo_config.cycles, g_piezo_config.avg, g_piezo_config.delay_us, g_piezo_config.samples);
piezo_config_log("[CMD] mcs saved", &g_piezo_config);
return 1;
}
@@ -1346,7 +1314,6 @@ static int cmd_mfv(const uint8_t *data, uint8_t data_len)
{
DBG_ERR("[CMD] mfv tx failed err=%d\r\n", err);
}
DBG_PRINTF("[CMD] mfv read\r\n");
return 1;
}
@@ -1362,7 +1329,6 @@ static int cmd_mid(const uint8_t *data, uint8_t data_len)
{
DBG_ERR("[CMD] mid tx failed err=%d\r\n", err);
}
DBG_PRINTF("[CMD] mid read\r\n");
return 1;
}
@@ -1371,7 +1337,6 @@ static int cmd_mwh(const uint8_t *data, uint8_t data_len)
if (data_len < HW_NO_LENGTH)
{
send_response_u16("rwh:", 0xFFFF);
DBG_PRINTF("[CMD] mwh: insufficient data len=%u\r\n", data_len);
return 1;
}
@@ -1385,7 +1350,6 @@ static int cmd_mwh(const uint8_t *data, uint8_t data_len)
}
send_response_ascii("rwh:", HW_NO, HW_NO_LENGTH);
DBG_PRINTF("[CMD] mwh updated\r\n");
return 1;
}
@@ -1401,7 +1365,6 @@ static int cmd_mrh(const uint8_t *data, uint8_t data_len)
{
DBG_ERR("[CMD] mrh tx failed err=%d\r\n", err);
}
DBG_PRINTF("[CMD] mrh read\r\n");
return 1;
}
@@ -1410,7 +1373,6 @@ static int cmd_mws(const uint8_t *data, uint8_t data_len)
if (data_len < SERIAL_NO_LENGTH)
{
send_response_u16("rws:", 0xFFFF);
DBG_PRINTF("[CMD] mws: insufficient data len=%u\r\n", data_len);
return 1;
}
@@ -1424,7 +1386,6 @@ static int cmd_mws(const uint8_t *data, uint8_t data_len)
}
send_response_ascii("rws:", SERIAL_NO, SERIAL_NO_LENGTH);
DBG_PRINTF("[CMD] mws updated\r\n");
return 1;
}
@@ -1440,7 +1401,6 @@ static int cmd_mrs(const uint8_t *data, uint8_t data_len)
{
DBG_ERR("[CMD] mrs tx failed err=%d\r\n", err);
}
DBG_PRINTF("[CMD] mrs read\r\n");
return 1;
}
@@ -1449,7 +1409,6 @@ static int cmd_mpz(const uint8_t *data, uint8_t data_len)
if (data_len < PASSKEY_LENGTH)
{
send_response_u16("rpz:", 0xFFFF);
DBG_PRINTF("[CMD] mpz: insufficient data len=%u\r\n", data_len);
return 1;
}
@@ -1486,7 +1445,6 @@ static int cmd_mpz(const uint8_t *data, uint8_t data_len)
m_passkey_changed = 1U;
send_response_ascii("rpz:", m_static_passkey, PASSKEY_LENGTH);
DBG_PRINTF("[CMD] mpz updated\r\n");
return 1;
}
@@ -1496,7 +1454,6 @@ static int cmd_mqz(const uint8_t *data, uint8_t data_len)
ARG_UNUSED(data_len);
send_response_ascii("rqz:", m_static_passkey, PASSKEY_LENGTH);
DBG_PRINTF("[CMD] mqz read\r\n");
return 1;
}
@@ -1524,12 +1481,10 @@ static int cmd_mls(const uint8_t *data, uint8_t data_len)
led_set_state((led_state_t)state);
if (state == LED_STATE_OFF)
{
int imu_ret = imu_fifo_stop();
DBG_PRINTF("[CMD] mls: fifo stop ret=%d\r\n", imu_ret);
(void)imu_fifo_stop();
}
send_response_u16("rls:", state);
DBG_PRINTF("[CMD] mls -> LED state=%d\r\n", state);
return 1;
}
@@ -1577,7 +1532,7 @@ static const cmd_entry_t cmd_table[] =
/*==============================================================================
* 파서 엔트리
*============================================================================*/
int dr_parser(const uint8_t *buf, uint16_t len)
int ble_cmd_dispatch(const uint8_t *buf, uint16_t len)
{
DBG_CORE("[PARSER] enter len=%u\r\n", len);
DBG_CORE("[CMD] RX len=%u\r\n", len);
@@ -1619,7 +1574,6 @@ int dr_parser(const uint8_t *buf, uint16_t len)
ascii_to_lower((char)buf[3]),
'\0'
};
DBG_CORE("[CMD] tag=%s\r\n", tag);
const uint8_t *data = buf + 4;
uint8_t data_len = (uint8_t)(len - 4U - 2U);
@@ -1638,7 +1592,6 @@ int dr_parser(const uint8_t *buf, uint16_t len)
return -1;
}
DBG_CORE("[CMD] dispatch -> %s\r\n", cmd_table[i].tag);
return cmd_table[i].handler(data, data_len);
}
}