//custom to do here
#endif //NORDIC_SDK
+#define COFFY_PATH "/user/system/hx3508_coffy.bin"
+
#define INT_PIN S_AGPIO_R3
#define HX3508_I2C_BUS I2C_BUS_2
static uint16_t timer_cnt = 0;
+static float g_sum_y = 0;
+static float coffy = 0.0f;
+static uint8_t factory_flag = 0;
+static int16_t sum_deltay = 0;
+
/*--------以下为定时函数相关定义 建立/启动/停止定时器//定时中断处理-----------*/
}
+void hx3508_set_factory_test_mode(uint8_t cmd)
+{
+ factory_flag = cmd;
+}
+
+void hx3508_set_coffy(float data)
+{
+ coffy = data;
+ // printf("set coffy :%.3f\n",coffy);
+ uapi_save_file_data(COFFY_PATH,&coffy,4,"w");
+}
+
+static void hx3508_get_coffy(void)
+{
+ float data = 0.0f;
+ uint16_t len = 4;
+ uapi_get_file_data(COFFY_PATH,&data,&len);
+ if(!data || data > 1.5 || data < 0.5)
+ coffy = 1;
+ else
+ coffy = data;
+ // printf("data : %f\n",data);
+ // printf("coffy: %f\n",coffy);
+}
+
+void hx3508_get_sum_y(float *data)
+{
+ if(sum_deltay && coffy!= 0 && data != 0 && sum_deltay != 0)
+ {
+ g_sum_y = 360/(float)sum_deltay * 1000 * coffy;
+ // printf("sum_deltay : %d\n",sum_deltay);
+ // printf("g_sum_y : %.3f,coffy : %.3f\n",g_sum_y,coffy);
+ *data = g_sum_y;
+ }
+
+ g_sum_y = 0;
+ sum_deltay = 0;
+}
+
+
+
/**
* OTS 定时器创建函数
* @param NULL
deltax = ots_read_reg(RA_ACC_DELTA_X_LOW) |(ots_read_reg(RA_ACC_DELTA_X_HIG)<<8);
deltay = ots_read_reg(RA_ACC_DELTA_Y_LOW) |(ots_read_reg(RA_ACC_DELTA_Y_HIG)<<8);
TYHX_LOG("Deltay = %d \r\n",deltay);//djd0305
-
+ // printf("deltay:%d,coffy:%.3f\n",deltay,coffy);
+ // if(deltay && coffy)
+ // deltay = (float)deltay * coffy;
+ // printf("deltay:%d\n",deltay);
+ if(factory_flag && deltay != 0)
+ {
+ // printf("deltay : %d\n",deltay);
+ // printf("coffy:%f\n",coffy);
+ // g_sum_y += 360/(float)deltay*1000*coffy;
+ // printf("g_sum_y:%.3f\n",g_sum_y);
+ sum_deltay += deltay;
+ // printf("deltay:%.d, sum_deltay : %d\n",deltay,sum_deltay);
+ }
+
if (stand_still == 1)
{
//上次是静止,上报状态改变
//用户添加程序, deltay 是表冠产生数据, 上报给UI, 如果需要数据变化,
// 积攒到一定值再上报UI, 可以调用 ots_result_deal()函数处理.
-
+ if(coffy && deltay != 0)
+ {
+ deltay = (int16_t)(deltay * coffy);
+ }
ots_result_deal(deltay);
}
else
LOS_Mdelay(10);
ots_write_reg(RA_DEBUG_CAS0,0x43);
hx3508l_calibration();
-
+ if(!coffy)
+ hx3508_get_coffy();
#ifdef MOT_NO_USE_MODE // 如果是非中断模式, 初始后, 开启定时器;
// ots_timer_start();
#endif
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-12-03 11:30:51\r
+ * @LastEditTime: 2025-12-10 15:36:21\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
printf("conn_type : %d\n", conn_type);\r
\r
g_bt_conn_cnt++;\r
- if(g_bt_conn_cnt >= 10)\r
+ if(g_bt_conn_cnt >= 120)\r
{\r
g_bt_conn_cnt = 0;\r
osTimerStop(g_bt_conn_timer);\r
0x07,\r
&send_data,\r
1);\r
- }\r
+ } \r
+ else if(testitem == 0x08)\r
+ {\r
+ //获取表冠ID\r
+ uint8_t send_data[2] = {0};\r
+#ifdef ROTARYENCODER_HX3508\r
+ uint16_t crown_id =0;\r
+ rotary_get_chip_id(&crown_id);\r
+ send_data[0] = (uint8_t)(((uint16_t)crown_id & 0xFF00) >> 8);\r
+ send_data[1] = (uint8_t)((uint16_t)crown_id & 0x00FF);\r
+#endif\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_KEY,\r
+ 0x08,\r
+ send_data,\r
+ 2);\r
+ } \r
+ else if(testitem == 0x09)\r
+ {\r
+ //进入表冠校准模式\r
+ uint8_t send_data = 0;\r
+#ifdef ROTARYENCODER_HX3508\r
+ hx3508_set_factory_test_mode(1);\r
+#endif\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_KEY,\r
+ 0x09,\r
+ &send_data,\r
+ 1);\r
+ } \r
+ else if(testitem == 0x0A)\r
+ {\r
+ //获取校准结果\r
+ uint8_t databuf[2] = {0};\r
+#ifdef ROTARYENCODER_HX3508\r
+ float send_data = 0;\r
+ hx3508_get_sum_y(&send_data);\r
+ printf("send_data : %.3f\n",send_data);\r
+ int16_t signed_data = (int16_t)send_data;\r
+ databuf[0] = (uint8_t)(((uint32_t)signed_data & 0xFF00) >> 8);\r
+ databuf[1] = (uint8_t)((uint32_t)signed_data & 0x00FF);\r
+#endif\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_KEY,\r
+ 0x0A,\r
+ databuf,\r
+ 2);\r
+ } \r
+ \r
+ else if(testitem == 0x0B)\r
+ {\r
+ //设置校准参数\r
+ uint8_t send_data = 0;\r
+ // printf("len : %d\n",len);\r
+ // for(int i = 0 ; i < len ; i++)\r
+ // {\r
+ // printf("data[%d]:0x%x\n",i,data[i]);\r
+ // }\r
+#ifdef ROTARYENCODER_HX3508\r
+ if(data != NULL && len == 5)\r
+ {\r
+ float coffy = ((uint16_t)data[0] << 8 | data[1]) / 1000.0f;\r
+ printf("coffy : %.3f \n",coffy);\r
+ hx3508_set_coffy(coffy);\r
+ }\r
+#endif\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_KEY,\r
+ 0x0B,\r
+ &send_data,\r
+ 1);\r
+ } \r
+ \r
\r
break;\r
\r
}\r
if(g_bt_conn_timer != NULL)\r
{\r
- osTimerStart(g_bt_conn_timer, 500);\r
+ osTimerStart(g_bt_conn_timer, 1000);\r
}\r
\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
}\r
if(g_bt_conn_timer != NULL)\r
{\r
- osTimerStart(g_bt_conn_timer, 500);\r
+ osTimerStart(g_bt_conn_timer, 1000);\r
}\r
\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r