maa samples 140->100 변경, mec/maa 수신 시 Piezo 자동 Active/Sleep
- MAA_NUM_SAMPLES 140에서 100으로 변경 (DR_ADC_ECHO_SAMPLES_MAX 제한) - 단일(mec) 및 모든 채널(maa) 에코 캡처 명령 수신 시 Piezo 자동 Active, 응답 송신 후 Sleep - Cmd_mpa 중복 호출 정리 (dr_piezo_system_init 내부에 power_on 포함) - 채널별 디버그 로그 추가 - 코드 리뷰 주석 정리 및 기타 파일 업데이트 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -608,11 +608,15 @@ static void nrf_qwr_error_handler(uint32_t nrf_error)
|
||||
extern bool maa_async_on_tx_ready(void);
|
||||
extern bool maa_async_is_busy(void);
|
||||
|
||||
/* 2026-03-17: BLE 콜백에서 블로킹 방지 — 명령을 버퍼에 저장 후 메인 루프에서 처리 */
|
||||
static volatile uint8_t pending_cmd_buf[BLE_NUS_MAX_DATA_LEN];
|
||||
static volatile uint8_t pending_cmd_len = 0;
|
||||
|
||||
/**
|
||||
* @brief NUS(Nordic UART Service) 데이터 수신 핸들러
|
||||
*
|
||||
* BLE를 통해 스마트폰 앱에서 데이터를 수신했을 때 호출됨
|
||||
* - RX_DATA 이벤트: 수신된 명령을 received_command_process()로 전달
|
||||
* - RX_DATA 이벤트: 수신 데이터를 버퍼에 복사 (메인 루프에서 dr_cmd_parser 호출)
|
||||
* - TX_RDY 이벤트: BLE TX 버퍼에 공간이 생겼을 때 비동기 MAA 전송 계속
|
||||
*/
|
||||
static void nus_data_handler(ble_nus_evt_t * p_evt)
|
||||
@@ -622,7 +626,12 @@ static void nus_data_handler(ble_nus_evt_t * p_evt)
|
||||
cmd_type_t = CMD_BLE;
|
||||
ble_got_new_data = true;
|
||||
DBG_PRINTF("[NUS] RX len=%d\r\n", p_evt->params.rx_data.length);
|
||||
dr_cmd_parser(p_evt->params.rx_data.p_data, p_evt->params.rx_data.length);
|
||||
|
||||
/* 콜백에서는 복사만 하고, 메인 루프에서 처리 */
|
||||
if (p_evt->params.rx_data.length <= BLE_NUS_MAX_DATA_LEN) {
|
||||
memcpy((void *)pending_cmd_buf, p_evt->params.rx_data.p_data, p_evt->params.rx_data.length);
|
||||
pending_cmd_len = p_evt->params.rx_data.length;
|
||||
}
|
||||
}
|
||||
else if (p_evt->type == BLE_NUS_EVT_TX_RDY)
|
||||
{
|
||||
@@ -1771,6 +1780,13 @@ int main(void)
|
||||
// MAIN LOOP
|
||||
for (;;)
|
||||
{
|
||||
/* BLE 콜백에서 수신된 명령이 있으면 여기서 처리 (블로킹 방지) */
|
||||
if (pending_cmd_len > 0) {
|
||||
uint8_t len = pending_cmd_len;
|
||||
pending_cmd_len = 0;
|
||||
dr_cmd_parser((const uint8_t *)pending_cmd_buf, len);
|
||||
}
|
||||
|
||||
idle_state_handle();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user