개별 온도 커맨드 mst? 응답 시 TMP235 온도 센서를 IMU register direct read로 대체
- IMU 온도 read 실패 시 rso:ffff 응답
This commit is contained in:
@@ -2,14 +2,13 @@
|
|||||||
* cmd_sensor.c - Sensor measurement handlers
|
* cmd_sensor.c - Sensor measurement handlers
|
||||||
*
|
*
|
||||||
* msn? -> rsn: battery ADC measurement
|
* msn? -> rsn: battery ADC measurement
|
||||||
* mso? -> rso: TMP235 temperature reading
|
* mst? -> rso: IMU die temperature reading
|
||||||
* msp? -> rsp: IMU 6-axis single read
|
* msp? -> rsp: IMU 6-axis single read
|
||||||
* all_sensors() bulk-measurement helper used by the mbb? handler
|
* all_sensors() bulk-measurement helper used by the mbb? handler
|
||||||
*============================================================================*/
|
*============================================================================*/
|
||||||
|
|
||||||
#include "cmd_common.h"
|
#include "cmd_common.h"
|
||||||
#include "cmd_sensor.h"
|
#include "cmd_sensor.h"
|
||||||
#include "dr_piezo.h"
|
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* msn? -> rsn: Battery level ADC measurement
|
* msn? -> rsn: Battery level ADC measurement
|
||||||
@@ -25,34 +24,23 @@ int Cmd_msn(const ParsedCmd *cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* mst? -> rso: Temperature with piezo power cycle
|
* mst? -> rso: IMU die temperature
|
||||||
*
|
*
|
||||||
* Request: [TAG 4B "mst?"] [CRC 2B]
|
* Request: [TAG 4B "mst?"] [CRC 2B]
|
||||||
* Response: [TAG 4B "rso:"] [temp_x100 2B BE] [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_mst(const ParsedCmd *cmd)
|
int Cmd_mst(const ParsedCmd *cmd)
|
||||||
{
|
{
|
||||||
uint32_t timeout_cnt;
|
uint16_t imu_temp_x100 = 0xFFFF;
|
||||||
(void)cmd;
|
(void)cmd;
|
||||||
|
|
||||||
if (!dr_piezo_is_power_on())
|
if (imu_read_temperature_x100(&imu_temp_x100, NULL) != 0)
|
||||||
{
|
{
|
||||||
dr_piezo_power_on();
|
imu_temp_x100 = 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp235_saadc_done = false;
|
single_format_data(ble_bin_buffer, "rso:", imu_temp_x100);
|
||||||
tmp235_voltage_level_meas();
|
dr_binary_tx_safe(ble_bin_buffer, 3);
|
||||||
for (timeout_cnt = 0; !tmp235_saadc_done && timeout_cnt < 100; timeout_cnt++)
|
|
||||||
{
|
|
||||||
dr_sd_delay_ms(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
dr_piezo_power_off();
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user