补交优化运动模式切换函数,添加静态模式切换函数
authorpenglei <1624952103@qq.com>
Thu, 11 Apr 2024 10:34:20 +0000 (18:34 +0800)
committerpenglei <1624952103@qq.com>
Thu, 11 Apr 2024 10:34:20 +0000 (18:34 +0800)
1  2 
code/sdk/drivers/peripheral/cywee/service/cywee_service.c
code/sdk/drivers/peripheral/cywee/src/main_dml.c

@@@ -14,6 -14,6 +14,8 @@@
  #include "custom_utils.h"
  #include "sys/time.h"
  #include "time.h"
++#include "sys/time.h"
++#include "time.h"
  
  #define AP_ENABLE_DML_SDO_LISTEN
  
@@@ -160,26 -170,7 +161,27 @@@ void activity_setstatus(int cmd
      CWM_SettingControl(SCL_ACTIVITY_PAUSE, &scl);
  }
  
- void activity_exit(void)
+ 
++void cyw_inactivity_mode_change(int mode)
 +{
 +    memset(&scl, 0, sizeof(scl));
 +    scl.iData[0] = 1;
 +    CWM_SettingControl(SCL_REQ_ACTIVITY_EXIT, &scl);
 +
 +    // if(cywee_installized == 1)
 +    //     cywee_installized = 0;
 +    if(free_training_installized == 1)
 +    {
 +        free_training_installized = 0;
 +        //osTimerStop(g_cywee_wearstatus_timer);
 +        osTimerStop(g_cywee_oncharging_timer);
 +        osTimerStop(g_cywee_hrs_timer);
 +        osTimerDelete(g_cywee_oncharging_timer);
 +        osTimerDelete(g_cywee_hrs_timer);
 +        ppg_send_cmd_to_driver("hrs",0);
 +    }
 +}
 +
  void cyw_inactivity_mode_change(int mode)
  {
      switch (mode)
@@@ -657,238 -657,236 +663,239 @@@ void CWM_AP_dmlSensorDataOutput_listen(
  #endif
  
  
- int cywee_main_dml(int cmd) {
+ int cywee_main_dml(void) 
+ {
  
 -    if (cywee_installized == 1)
 +    if (cywee_installized==0)
      {
 -        CWM_OS_dbgPrintf("cywee_installized skip install\n");
 -        return 0;
 -    }
 -    cywee_installized = 1;
 -
 -    int i;
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_GET_LIB_INFO, &scl);
 -    CWM_OS_dbgPrintf("version:%d.%d.%d.%d product:%d model:%d\n", scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5], scl.iData[6]);
 -    CWM_OS_dbgPrintf("[DBG] ach: %d\n", scl.iData[7]);
 -#if USE_P813
 -    os_api api = {
 -        .GetTimeNs    = CWM_OS_GetTimeNs,
 -        .dbgOutput    = CWM_OS_dbgOutput,
 -        .i2cRead      = CWM_OS_i2cRead,
 -        .i2cWrite     = CWM_OS_i2cWrite,
 -        .uSleep       = CWM_OS_uSleep,
 -        .free         = CWM_OS_free,
 -        .malloc       = CWM_OS_malloc,
 -        .spiRead      = NULL,
 -        .spiWrite      = NULL,
 -    };
 -    CWM_LibPreInit(&api);
 -
 -#else
 -    OsAPI apiOS = {
 -        .GetTimeNs    = CWM_OS_GetTimeNs,
 -        .dbgOutput    = CWM_OS_dbgOutput,
 -        .i2cRead      = CWM_OS_i2cRead,
 -        .i2cWrite     = CWM_OS_i2cWrite,
 -        .uSleep       = CWM_OS_uSleep,
 -        .free         = CWM_OS_free,
 -        .malloc       = CWM_OS_malloc,
 -        .i2cTransfer  = CWM_OS_i2cTransfer,
 -        .restoreData  = CWM_OS_restoreData,
 -        .saveData     = CWM_OS_saveData,
 -        .spiRead      = NULL,
 -        .spiWrite     = NULL,
 -        .securityCodeWrite      = NULL,
 -        .setGpio      = NULL,
 -        .enableGpioIRQ      = NULL,
 -        .disableGpioIRQ      = NULL,
 -    };
 -    CWM_LibPreInit(&apiOS);
 -#endif
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    //set mcu_chip information, must call this before CWM_LibPostInit()
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 2; // 0: mcu_auto_detect 2: skip_mcu_auto_detect
 -    CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    CWM_LibPostInit(CWM_AP_SensorListen);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    //get chip information
 -
 -    char chipInfo[64];
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 1;
 -    scl.iData[2] = (int)chipInfo;
 -    scl.iData[3] = sizeof(chipInfo);
 -    scl.iData[4] = 0;
 -    scl.iData[5] = 0;
 -    scl.iData[6] = 0;
 -    CWM_SettingControl(SCL_GET_CHIP_INFO, &scl);
 -    CWM_OS_dbgPrintf("have_security = %d.%d ret_buff_size = %d  chipInfo = %s\n", scl.iData[5], scl.iData[6], scl.iData[4], chipInfo);
 -    CWM_OS_dbgPrintf("chip_settings = %d, %d, %d\n", scl.iData[9], scl.iData[10], scl.iData[11]);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    CWM_Dml_LibInit();
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    #ifdef AP_ENABLE_DML_SDO_LISTEN
 -    // This API allows customers to develop custom features.
 -    // Specific settingControl commands needs to be called for this API to work.
 -    // No need to enable or implement this function for general usage.
 -    CWM_Dml_sensorDataOutput_register(CWM_AP_dmlSensorDataOutput_listen);
 +        cywee_installized = 1;
 +        int i;
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_GET_LIB_INFO, &scl);
 +        CWM_OS_dbgPrintf("version:%d.%d.%d.%d product:%d model:%d\n", scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5], scl.iData[6]);
 +        CWM_OS_dbgPrintf("[DBG] ach: %d\n", scl.iData[7]);
 +    #if USE_P813
 +        os_api api = {
 +            .GetTimeNs    = CWM_OS_GetTimeNs,
 +            .dbgOutput    = CWM_OS_dbgOutput,
 +            .i2cRead      = CWM_OS_i2cRead,
 +            .i2cWrite     = CWM_OS_i2cWrite,
 +            .uSleep       = CWM_OS_uSleep,
 +            .free         = CWM_OS_free,
 +            .malloc       = CWM_OS_malloc,
 +            .spiRead      = NULL,
 +            .spiWrite      = NULL,
 +        };
 +        CWM_LibPreInit(&api);
 +
 +    #else
 +        OsAPI apiOS = {
 +            .GetTimeNs    = CWM_OS_GetTimeNs,
 +            .dbgOutput    = CWM_OS_dbgOutput,
 +            .i2cRead      = CWM_OS_i2cRead,
 +            .i2cWrite     = CWM_OS_i2cWrite,
 +            .uSleep       = CWM_OS_uSleep,
 +            .free         = CWM_OS_free,
 +            .malloc       = CWM_OS_malloc,
 +            .i2cTransfer  = CWM_OS_i2cTransfer,
 +            .restoreData  = CWM_OS_restoreData,
 +            .saveData     = CWM_OS_saveData,
 +            .spiRead      = NULL,
 +            .spiWrite     = NULL,
 +            .securityCodeWrite      = NULL,
 +            .setGpio      = NULL,
 +            .enableGpioIRQ      = NULL,
 +            .disableGpioIRQ      = NULL,
 +        };
 +        CWM_LibPreInit(&apiOS);
      #endif
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_DML_GET_LIB_INFO, &scl);
 -    CWM_OS_dbgPrintf("dml version:%d.%d.%d.%d product:%d model:%d\n", scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5], scl.iData[6]);
 -
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 18; //00000000000000000000000000010010  高位在前
 -    // CWM_SettingControl(SCL_DML_DEBUG, &scl);
 -
 -    //设置acc gyro 相关参数
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[3] = 2;
 -    scl.iData[4] = 2; //1 anytime 2 fifo
 -    scl.iData[6] = 5; //先設定5
 -    scl.iData[7] = 5;
 -    scl.iData[8] = 52; // for st sensor(52Hz)
 -    CWM_SettingControl(SCL_DML_DRV_AG_CONFIG, &scl);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    //设定搜寻哪种型号的传感器,以及要搜寻的属性
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 2;
 -    scl.iData[6] = 3002502;
 -    scl.iData[7] = (0|1|8|256|1024);
 -    CWM_SettingControl(SCL_DML_DRV_HW_CONFIG, &scl);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    //搜寻是否接入传感器
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 1;
 -    CWM_SettingControl(SCL_DML_DRV_INIT, &scl); 
 -    CWM_OS_dbgPrintf("DML device=%d\n", scl.iData[2]);
 -
 -    //获取初始化 driver清单
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_DML_GET_INITED_LIST, &scl);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    for (i = 0; i < scl.iData[2]; i ++) {
 -
 -        CWM_OS_dbgPrintf("DML device[%d]: hw_id=%d hw_attr=%d\n", i, scl.iData[6 + i * 2], scl.iData[7 + i * 2]);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        //set mcu_chip information, must call this before CWM_LibPostInit()
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 2; // 0: mcu_auto_detect 2: skip_mcu_auto_detect
 +        CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        CWM_LibPostInit(CWM_AP_SensorListen);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        //get chip information
 +
 +        char chipInfo[64];
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 1;
 +        scl.iData[2] = (int)chipInfo;
 +        scl.iData[3] = sizeof(chipInfo);
 +        scl.iData[4] = 0;
 +        scl.iData[5] = 0;
 +        scl.iData[6] = 0;
 +        CWM_SettingControl(SCL_GET_CHIP_INFO, &scl);
 +        CWM_OS_dbgPrintf("have_security = %d.%d ret_buff_size = %d  chipInfo = %s\n", scl.iData[5], scl.iData[6], scl.iData[4], chipInfo);
 +        CWM_OS_dbgPrintf("chip_settings = %d, %d, %d\n", scl.iData[9], scl.iData[10], scl.iData[11]);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        CWM_Dml_LibInit();
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        #ifdef AP_ENABLE_DML_SDO_LISTEN
 +        // This API allows customers to develop custom features.
 +        // Specific settingControl commands needs to be called for this API to work.
 +        // No need to enable or implement this function for general usage.
 +        CWM_Dml_sensorDataOutput_register(CWM_AP_dmlSensorDataOutput_listen);
 +        #endif
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_DML_GET_LIB_INFO, &scl);
 +        CWM_OS_dbgPrintf("dml version:%d.%d.%d.%d product:%d model:%d\n", scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5], scl.iData[6]);
 +
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 18; //00000000000000000000000000010010  高位在前
 +        // CWM_SettingControl(SCL_DML_DEBUG, &scl);
 +
 +        //设置acc gyro 相关参数
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[3] = 2;
 +        scl.iData[4] = 2; //1 anytime 2 fifo
 +        scl.iData[6] = 5; //先設定5
 +        scl.iData[7] = 5;
 +        scl.iData[8] = 52; // for st sensor(52Hz)
 +        CWM_SettingControl(SCL_DML_DRV_AG_CONFIG, &scl);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        //设定搜寻哪种型号的传感器,以及要搜寻的属性
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 2;
 +        scl.iData[6] = 3002502;
 +        scl.iData[7] = (0|1|8|256|1024);
 +        CWM_SettingControl(SCL_DML_DRV_HW_CONFIG, &scl);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        //搜寻是否接入传感器
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 1;
 +        CWM_SettingControl(SCL_DML_DRV_INIT, &scl); 
 +        CWM_OS_dbgPrintf("DML device=%d\n", scl.iData[2]);
 +
 +        //获取初始化 driver清单
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_DML_GET_INITED_LIST, &scl);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        for (i = 0; i < scl.iData[2]; i ++) {
 +
 +            CWM_OS_dbgPrintf("DML device[%d]: hw_id=%d hw_attr=%d\n", i, scl.iData[6 + i * 2], scl.iData[7 + i * 2]);
          }
  
 -    //配置跑步机模式相关参数(进入跑步机模式自动生效)
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_PEDO_CONFIG, &scl);
 -
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_ACTIVITY_CONFIG, &scl);
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_SLEEP_CONFIG, &scl);
 -
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_REQ_SLEEPING_DATA, &scl);
 -
 -/*
 -SCL_INACTIVITY_CONFIG
 -int[0] = 1
 -int[1] = 感測器雜訊度等級 (default: 低雜訊)
 -  (0: 低雜訊, 1: 高雜訊)
 -*/
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 1;
 -    CWM_SettingControl(SCL_INACTIVITY_CONFIG, &scl);
 -
 -
 -    //设置久坐参数
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    CWM_SettingControl(SCL_SEDENTARY, &scl);
 -
 -    
 -    //设置抬腕功能
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    // scl.iData[1] = 5;
 -    // scl.iData[2] = 5;
 -    // scl.iData[3] = 5;
 -    // scl.iData[4] = 5;
 -    CWM_SettingControl(SCL_HAND_UPDOWN_CONFIG, &scl);
 -    
 -    //呼叫任一個CWM_Sensor_Enable 前呼叫此指令 设置手动或自动模式
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = 1;
 -    // int[2] = 3,代表開啟acc和gyro感測器  1代表开启acc
 -    scl.iData[2] = 1;
 -    CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[3] = 3;
 -    scl.iData[4] = 5;
 -    // CWM_SettingControl(SCL_LOG, &scl);
 -
 -    
 -    CWM_Sensor_Enable(IDX_REQUEST_SENSOR);
 -    // //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -    CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT);
 +        //设置抬腕功能
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        // scl.iData[1] = 5;
 +        // scl.iData[2] = 5;
 +        // scl.iData[3] = 5;
 +        // scl.iData[4] = 5;
 +        CWM_SettingControl(SCL_HAND_UPDOWN_CONFIG, &scl);
 +
 +        //配置跑步机模式相关参数(进入跑步机模式自动生效)
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_PEDO_CONFIG, &scl);
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_ACTIVITY_CONFIG, &scl);
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_PEDO_CONFIG, &scl);
 +
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_SLEEP_CONFIG, &scl);
 +
 +    /*
 +    SCL_REQ_SLEEPING_DATA
 +    int[0] = 1
 +    int[1] = terminate_sleep
 +    (0: 立刻輸出狀態,但不中止此段睡眠偵測, 
 +    1: 立刻輸出狀態,並中止此段睡眠偵測)
 +    */
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 0;
 +        CWM_SettingControl(SCL_REQ_SLEEPING_DATA, &scl);
 +
 +    /*
 +    SCL_INACTIVITY_CONFIG
 +    int[0] = 1
 +    int[1] = 感測器雜訊度等級 (default: 低雜訊)
 +    (0: 低雜訊, 1: 高雜訊)
 +    */
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        CWM_SettingControl(SCL_INACTIVITY_CONFIG, &scl);
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[2] = 1;
 +        // int[2] = 3,代表開啟acc和gyro感測器  1代表开启acc
 +        scl.iData[3] = 1;
 +        scl.iData[4] = 3;
 +        scl.iData[5] = 1;
 +        CWM_SettingControl(SCL_SEDENTARY, &scl);
 +
 +
 +        //呼叫任一個CWM_Sensor_Enable 前呼叫此指令 设置手动或自动模式
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[1] = 1;
 +        // int[2] = 3,代表開啟acc和gyro感測器  1代表开启acc
 +        scl.iData[2] = 1;
 +        CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +
 +        memset(&scl, 0, sizeof(scl));
 +        scl.iData[0] = 1;
 +        scl.iData[3] = 3;
 +        scl.iData[4] = 5;
 +        // CWM_SettingControl(SCL_LOG, &scl);
 +        
 +        CWM_Sensor_Enable(IDX_REQUEST_SENSOR);
 +        // //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +        CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT);
 +        
 +        CWM_Sensor_Enable(IDX_ALGO_ACTIVITY_OUTPUT);
 +
 +        CWM_Sensor_Enable(IDX_ACCEL);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +        // CWM_Sensor_Enable(IDX_GYRO);
 +        CWM_Sensor_Enable(IDX_ALGO_NO_MOTION);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +        // CWM_Sensor_Enable(IDX_ALGO_ANY_MOTIOIN);
 +        CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC);
 +        //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 +        CWM_Sensor_Enable(IDX_ALGO_WATCH_HANDUP);
 +            CWM_OS_dbgPrintf("cywee_installized skip install\n");
 +    }
      
 -    CWM_Sensor_Enable(IDX_ALGO_ACTIVITY_OUTPUT);
 -
 -    CWM_Sensor_Enable(IDX_ACCEL);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -    // CWM_Sensor_Enable(IDX_GYRO);
 -    CWM_Sensor_Enable(IDX_ALGO_NO_MOTION);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -    // CWM_Sensor_Enable(IDX_ALGO_ANY_MOTIOIN);
 -    CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -    CWM_Sensor_Enable(IDX_ALGO_WATCH_HANDUP);
 -
 -    memset(&scl, 0, sizeof(scl));
 -    scl.iData[0] = 1;
 -    scl.iData[1] = SPORT_ACTIVE_MODE_NORMAL;
 -    CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
 -    // CWM_SettingControl(SCL_SET_INACTIVITY_MODE, &scl);
 -    //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 -
 -
 -    // cyw_activity_mode_change(cmd);
 -    // cyw_inactivity_mode_change();
 +    cyw_activity_mode_change(cmd);
 +    if(cmd == SPORT_ACTIVE_MODE_NORMAL)
 +        cyw_activity_mode_change(INACTIVITY_MODE_NOTHING);
      // memset(&scl, 0, sizeof(scl));
      // scl.iData[0] = 1;
      // scl.iData[1] = SPORT_ACTIVE_MODE_NORMAL; //ACTIVITY_MODE_NORMAL 1001