Compare commits

...

3 Commits

Author SHA1 Message Date
jh.chun 1ea0c74eb7 Ver117 업데이트 2026-05-27 14:47:17 +09:00
jh.chun 1a887a2002 Piezo 측정 중에는 배터리/온도 저전압 체크가 동작하지 않도록 가드 추가
- battery_loop()에서 maa_async_is_busy()면 return
- safety_check_complete()에서도 MAA 중이면 dr_piezo_power_off() 안 하고 return
2026-05-27 14:47:01 +09:00
jh.chun 8f269776ed Physical Layer LE 1Mbps 고정 2026-05-27 14:45:29 +09:00
3 changed files with 16 additions and 23 deletions
@@ -1069,7 +1069,7 @@ static void peer_manager_init(void)
* Key events handled:
* - DISCONNECTED: connection lost -> device sleep, state reset
* - CONNECTED: connection established -> assign QWR handle, set TX power +8dBm
* - PHY_UPDATE_REQUEST: auto-accept PHY update
* - PHY_UPDATE_REQUEST: keep link on 1M PHY
* - TIMEOUT: connection/GATT timeout -> force disconnect
* - SEC_PARAMS_REQUEST: security parameter request (reject if security unused)
* - PASSKEY_DISPLAY: display passkey (debug log)
@@ -1155,40 +1155,22 @@ static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context)
sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_CONN, m_conn_handle, 4);
// Request 2M PHY (falls back to 1M automatically if unsupported)
{
ble_gap_phys_t const phys = {
.rx_phys = BLE_GAP_PHY_2MBPS,
.tx_phys = BLE_GAP_PHY_2MBPS,
};
err_code = sd_ble_gap_phy_update(m_conn_handle, &phys);
APP_ERROR_CHECK(err_code);
}
led_set_state(LED_STATE_OFF); /* Connection complete -> LED OFF */
break;
case BLE_GAP_EVT_PHY_UPDATE_REQUEST:
{
/* Product is certified/tested as fixed 1M PHY. */
ble_gap_phys_t const phys = {
.rx_phys = BLE_GAP_PHY_AUTO,
.tx_phys = BLE_GAP_PHY_AUTO,
.rx_phys = BLE_GAP_PHY_1MBPS,
.tx_phys = BLE_GAP_PHY_1MBPS,
};
err_code = sd_ble_gap_phy_update(p_ble_evt->evt.gap_evt.conn_handle, &phys);
APP_ERROR_CHECK(err_code);
}
break;
case BLE_GAP_EVT_PHY_UPDATE:
{
ble_gap_evt_phy_update_t const * p_phy = &p_ble_evt->evt.gap_evt.params.phy_update;
DBG_PRINTF("[BLE] PHY updated: TX=%s, RX=%s\r\n",
p_phy->tx_phy == BLE_GAP_PHY_2MBPS ? "2M" : "1M",
p_phy->rx_phy == BLE_GAP_PHY_2MBPS ? "2M" : "1M");
}
break;
case BLE_GATTC_EVT_TIMEOUT:
case BLE_GATTS_EVT_TIMEOUT:
DBG_PRINTF("[BLE] GATT Timeout -> disconnect\r\n");
@@ -44,8 +44,9 @@
* : Added mtb? command (reb:+raa:+rim:, 6ch piezo + ICM42670 FIFO at 25 Hz).
* : rim: packet format and FIFO sample cap/filter options (app_raw).
* - VBTFW0116 260522 jhChun : Expanded BLE TX pending slots from 1 8 to reduce ADC data packet loss when the TX queue is full
* - VBTFW0117 260527 jhChun : Prevent battery/temperature safety checks from powering off piezo during MAA capture, and lock BLE PHY to 1M.
------------------------------------------------------------------------- */
#define FIRMWARE_VERSION "VBTFW0116"
#define FIRMWARE_VERSION "VBTFW0117"
/*==============================================================================
* Data Length Constants
@@ -90,6 +90,7 @@ extern bool go_batt;
extern bool motion_raw_data_enabled;
extern bool ble_got_new_data;
extern bool motion_data_once;
extern bool maa_async_is_busy(void);
/*==============================================================================
* safety_check_complete - Called by tmp235 handler after temperature measurement
@@ -102,6 +103,11 @@ void safety_check_complete(float temp_c)
//DBG_PRINTF("[SAFETY] Batt=%d mV, Temp=%d.%d C\r\n",
// (int)safety_batt_mv, (int)temp_c, ((int)(temp_c * 10)) % 10);
if (maa_async_is_busy())
{
return;
}
/* Battery check */
if (safety_batt_mv <= LOW_BATTERY_VOLTAGE)
{
@@ -268,6 +274,10 @@ void battery_loop(void * p_context)
{
return;
}
if (maa_async_is_busy())
{
return;
}
low_battery_check = true;
battery_level_meas();