BLE Piezo 6채널 데이터 패킷 병합 (reb+red -> reb 단일 패킷)
- BLE_MTU_SIZE 240 -> 244 (ATT MTU 247 - 3 = 244, 기존 4B 낭비 해소) - reb: 헤더 축소(14B → 6B) 후 데이터 병합 -> 119샘플까지 단일 패킷(현재 100샘플) - reb: 헤더에서 peak_raw/peak_index/baseline_raw/버전마커 제거 → PC에서 raw 데이터로 직접 계산, 단일 패킷이므로 버전마커 불필요 - 채널 간 딜레이 50ms -> 5ms (dr_binary_tx_safe 내부 재시도로 TX 보장) - delta 전송(rdb/rdd)도 동일 방식 적용, 종료 패킷(ree:/rde:) 제거 - 채널 완료 판단: 종료 패킷(ree:) 제거, reb: 수신 시 채널 완료 (100샘플 기준 단일 패킷) - 전체 완료는 기존과 동일하게 raa:로 판단
This commit is contained in:
@@ -356,9 +356,9 @@ static bool dr_parse_cmd(const uint8_t *buffer, uint8_t length, ParsedCmd *out)
|
||||
* - TX/RX 전원 활성화 (mpa? / rpa:) - test용
|
||||
* - TX/RX 전원 비활성화 (mpb? / rpb:) - test용
|
||||
* - 단일 채널 Burst (mpc? / rpc:) - test용
|
||||
* - 단일 채널 Burst + ADC -> echo capture (mec? / reb: -> red: -> ree:) : TX/RX Active -> 응답 -> TX/RX Sleep
|
||||
* - 모든 채널 Burst + ADC -> echo capture (maa? / reb: -> red: -> raa:) : TX/RX Active -> 응답 -> TX/RX Sleep
|
||||
* - 모든 채널 Burst + ADC -> echo capture (mbb? / reb: -> red: -> raa:) + 각종 센서 측정(배터리, IMU, 온도) : TX/RX Active -> 응답 -> TX/RX Sleep (NEW!)
|
||||
* - 단일 채널 Burst + ADC -> echo capture (mec? / reb: merged -> raa:) : TX/RX Active -> 응답 -> TX/RX Sleep
|
||||
* - 모든 채널 Burst + ADC -> echo capture (maa? / reb: merged -> raa:) : TX/RX Active -> 응답 -> TX/RX Sleep
|
||||
* - 모든 채널 Burst + ADC -> echo capture (mbb? / reb: merged -> raa:) + 각종 센서 측정(배터리, IMU, 온도) : TX/RX Active -> 응답 -> TX/RX Sleep
|
||||
*
|
||||
* 삭제 명령어
|
||||
* - 디바이스 활성화/슬립 : TX 전원 활성화/비활성화와 동일 기능
|
||||
@@ -787,13 +787,12 @@ static int Cmd_mpc(const ParsedCmd *cmd)
|
||||
* word 4: averaging (기본=1) - 평균화 횟수 (1~1000, 노이즈 저감용)
|
||||
* word 5: piezo_ch (기본=0) - 피에조 채널 (0~7)
|
||||
*
|
||||
* 응답 멀티패킷 형식 (16비트 원시):
|
||||
* 헤더 패킷 ("reb:"): total_pkts, peak, idx, baseline, samples
|
||||
* 데이터 패킷 ("red:"): pkt_idx + 16비트 ADC 원시 데이터
|
||||
* 종료 패킷 ("ree:"): total_bytes_sent
|
||||
* 응답 패킷 형식 (reb+red merged protocol):
|
||||
* 첫 패킷 ("reb:"): num_samples(2) + raw_data(up to 238B = 119샘플)
|
||||
* 연속 패킷 ("red:"): pkt_idx(2) + raw_data(up to 238B) — 119샘플 초과 시만
|
||||
* 완료 패킷 ("raa:"): status(2)
|
||||
*
|
||||
* 16비트 포맷: 샘플당 2바이트 (Little-Endian)
|
||||
* 예: 140샘플(20cm) = 280바이트 = 약 2패킷
|
||||
* 100샘플 기준: reb: 1패킷(206B)으로 완료
|
||||
*/
|
||||
static int Cmd_mec(const ParsedCmd *cmd)
|
||||
{
|
||||
@@ -936,14 +935,12 @@ static int Cmd_cmd(const ParsedCmd *cmd)
|
||||
* 주파수 = 1.8MHz, 딜레이 = 10us, 샘플 수 = 140
|
||||
* 사이클 = 7, 평균화 = 5회
|
||||
*
|
||||
* 응답 형식:
|
||||
* 각 채널(CH0~CH3)마다:
|
||||
* reb: [총패킷수(2)] [피크(2)] [인덱스(2)] [기준선(2)] [샘플수(2)]
|
||||
* red: [패킷순번(2)] [데이터...]
|
||||
* 응답 형식 (reb+red merged protocol):
|
||||
* 각 채널마다:
|
||||
* reb: [샘플수(2)] [raw_data...] — 119샘플 이하면 단일 패킷
|
||||
* red: [패킷순번(2)] [데이터...] — 119샘플 초과 시만
|
||||
* 전체 완료:
|
||||
* raa: [상태(2)]
|
||||
*
|
||||
* 버전 마커: 0xA000 (vA) = 비동기 4채널
|
||||
*/
|
||||
/* 피에조 캡처 파라미터: FDS(m_config)에서 로드, 앱에서 변경 가능 */
|
||||
|
||||
@@ -1072,11 +1069,11 @@ static void all_sensors(void)
|
||||
/**
|
||||
* @brief mbb? - 6채널 전체 캡처 + 센서 측정 (배터리/온도/IMU)
|
||||
*
|
||||
* 센서 측정(rbb:) → 6채널 비동기 캡처(reb:/red:/raa:) → TX/RX OFF
|
||||
* 센서 측정(rbb:) → 6채널 비동기 캡처(reb: merged) → raa: → TX/RX OFF
|
||||
*
|
||||
* 응답 흐름:
|
||||
* 1) 센서 측정: rbb: [배터리(2) + IMU 6축(12) + 온도(2)]
|
||||
* 2) 각 채널(CH0~CH5): reb: [헤더] → red: [데이터...]
|
||||
* 2) 각 채널: reb: [샘플수(2) + raw_data] (100샘플이면 단일 패킷)
|
||||
* 3) 캡처 완료: raa: [상태]
|
||||
*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user