Initial Commit
This commit is contained in:
@@ -13,6 +13,9 @@
|
||||
#include "led_control.h"
|
||||
#include "cmd_sensor.h"
|
||||
|
||||
/*
|
||||
* msn: battery voltage read
|
||||
*/
|
||||
int cmd_msn(const uint8_t *data, uint8_t data_len)
|
||||
{
|
||||
ARG_UNUSED(data);
|
||||
@@ -28,6 +31,9 @@ int cmd_msn(const uint8_t *data, uint8_t data_len)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* msp: IMU data direct read
|
||||
*/
|
||||
int cmd_msp(const uint8_t *data, uint8_t data_len)
|
||||
{
|
||||
ARG_UNUSED(data);
|
||||
@@ -47,8 +53,9 @@ int cmd_msp(const uint8_t *data, uint8_t data_len)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* mst? -> IMU internal temperature -> rso: + temperature (degC x 100, BE)
|
||||
* Error response: 0xFFFF = IMU temperature read failed. */
|
||||
/*
|
||||
* mst: IMU temperature direct read
|
||||
*/
|
||||
int cmd_mst(const uint8_t *data, uint8_t data_len)
|
||||
{
|
||||
ARG_UNUSED(data);
|
||||
@@ -68,19 +75,18 @@ int cmd_mst(const uint8_t *data, uint8_t data_len)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 음수 온도도 2's complement로 그대로 전송 (앱이 int16로 해석) */
|
||||
// 음수 온도도 2's complement로 그대로 전송 (앱이 int16로 해석)
|
||||
cmd_send_response_u16("rso:", (uint16_t)t_cdeg);
|
||||
DBG_PRINTF("[CMD] mst -> %d.%02d C\r\n", t_cdeg / 100, (t_cdeg < 0 ? -t_cdeg : t_cdeg) % 100);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* 테스트용
|
||||
* mpa?: piezo TX/RX 전원 레일만 켬
|
||||
* mls: LED status set
|
||||
*/
|
||||
int cmd_mls(const uint8_t *data, uint8_t data_len)
|
||||
{
|
||||
/* 파라미터 부족: 에러 코드 0xFFFF 에코 */
|
||||
// 파라미터 부족: 에러 코드 0xFFFF 에코
|
||||
if (data_len < 2)
|
||||
{
|
||||
cmd_send_response_u16("rls:", 0xFFFF);
|
||||
@@ -88,10 +94,10 @@ int cmd_mls(const uint8_t *data, uint8_t data_len)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* state 필드: 2바이트 big-endian */
|
||||
// state 필드: 2바이트 big-endian
|
||||
uint16_t state = ((uint16_t)data[0] << 8) | (uint16_t)data[1];
|
||||
|
||||
/* 범위 초과: 에러 코드 0xFFFE 에코 */
|
||||
// 범위 초과: 에러 코드 0xFFFE 에코
|
||||
if (state > LED_STATE_ERROR)
|
||||
{
|
||||
cmd_send_response_u16("rls:", 0xFFFE);
|
||||
@@ -101,14 +107,12 @@ int cmd_mls(const uint8_t *data, uint8_t data_len)
|
||||
|
||||
led_set_state((led_state_t)state);
|
||||
|
||||
/* 정렬 LED 상태와 보호 판정 정책 연결
|
||||
* - ALIGN_SEARCHING/ALIGN_COMPLETE 동안 보호 판정 차단
|
||||
* - 다른 LED 상태에서는 기존 조건에 따라 보호 판정 재개
|
||||
*/
|
||||
battery_protection_set_alignment_mode((state == LED_STATE_ALIGN_SEARCHING) ||
|
||||
(state == LED_STATE_ALIGN_COMPLETE));
|
||||
// 정렬 LED 상태와 보호 판정 정책 연결
|
||||
// - ALIGN_SEARCHING/ALIGN_COMPLETE 동안 보호 판정 차단
|
||||
// - 다른 LED 상태에서는 기존 조건에 따라 보호 판정 재개
|
||||
battery_protection_set_alignment_mode((state == LED_STATE_ALIGN_SEARCHING) || (state == LED_STATE_ALIGN_COMPLETE));
|
||||
|
||||
/* OFF 상태에서는 정렬/측정용 FIFO를 함께 정리 */
|
||||
// OFF 상태에서는 정렬/측정용 FIFO를 함께 정리
|
||||
if (state == LED_STATE_OFF)
|
||||
{
|
||||
(void)imu_fifo_stop();
|
||||
@@ -117,7 +121,3 @@ int cmd_mls(const uint8_t *data, uint8_t data_len)
|
||||
cmd_send_response_u16("rls:", state);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*==============================================================================
|
||||
* 커맨드 테이블
|
||||
*============================================================================*/
|
||||
|
||||
Reference in New Issue
Block a user