diff --git a/project/ble_peripheral/ble_app_bladder_patch/command/cmd_table.c b/project/ble_peripheral/ble_app_bladder_patch/command/cmd_table.c index bdeccdb..9ddf330 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/command/cmd_table.c +++ b/project/ble_peripheral/ble_app_bladder_patch/command/cmd_table.c @@ -39,7 +39,7 @@ static const CmdEntry m_cmd_table[] = { /* C. Sensor measurement */ { "msn?", true, Cmd_msn }, - { "mso?", true, Cmd_mso }, + { "mst?", true, Cmd_mst }, { "msp?", true, Cmd_msp }, { "msi?", true, Cmd_msi }, diff --git a/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.c b/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.c index 5c94dac..0d2521e 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.c +++ b/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.c @@ -26,15 +26,35 @@ int Cmd_msn(const ParsedCmd *cmd) } /*============================================================================== - * mso? -> rso: TMP235-Q1 temperature sensor measurement + * mst? -> rso: Temperature with piezo power cycle * - * Request: [TAG 4B "mso?"] [CRC 2B] - * Response: rso: + temperature (sent from tmp235_q1.c callback) + * Request: [TAG 4B "mst?"] [CRC 2B] + * Response: [TAG 4B "rso:"] [temp_x100 2B BE] [CRC 2B] + * + * TMP235 shares the piezo TX/RX power rail. This command handles the full + * sequence: power ON -> measure -> power OFF, so the caller doesn't need + * to send mpa?/mpb? separately. + * Response is sent from the TMP235 SAADC callback (tmp235_voltage_handler). *============================================================================*/ -int Cmd_mso(const ParsedCmd *cmd) +int Cmd_mst(const ParsedCmd *cmd) { + uint32_t timeout_cnt; (void)cmd; + + if (!dr_piezo_is_power_on()) + { + dr_piezo_power_on(); + } + + tmp235_saadc_done = false; tmp235_voltage_level_meas(); + for (timeout_cnt = 0; !tmp235_saadc_done && timeout_cnt < 100; timeout_cnt++) + { + dr_sd_delay_ms(1); + } + + dr_piezo_power_off(); + return 1; } diff --git a/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.h b/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.h index 20d2c89..5a23976 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.h +++ b/project/ble_peripheral/ble_app_bladder_patch/command/handlers/cmd_sensor.h @@ -7,7 +7,7 @@ #include "parser.h" int Cmd_msn(const ParsedCmd *cmd); /* msn? -> rsn: battery ADC measurement */ -int Cmd_mso(const ParsedCmd *cmd); /* mso? -> rso: TMP235 temperature reading */ +int Cmd_mst(const ParsedCmd *cmd); /* mst? -> rso: TMP235 with piezo power cycle */ int Cmd_msp(const ParsedCmd *cmd); /* msp? -> rsp: IMU 6-axis single read */ int Cmd_msi(const ParsedCmd *cmd); /* msi? -> rsi: IMU streaming start */