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:
jhChun
2026-03-17 18:03:04 +09:00
parent 39b4ffe66a
commit 96a46a26dd
29 changed files with 1474 additions and 501 deletions

View File

@@ -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();
}
}