static uint8_t g_check_count = 0;
-static int oncharging_status = 0;
+static int oncharging_status = -1;
static void battery_check_timer_callback(void* data);
errcode_t charger_plug_event_notify(uint8_t plugged);
--- /dev/null
+#ifndef TEST_SPEAKERC_H
+#define TEST_SPEAKERC_H
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif
+#endif
+ int check_speaker(bool isopen);
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif
}
return testSPEAKScrollView;
}
-}
\ No newline at end of file
+
+ #ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+ int check_speaker(bool isopen)
+ {
+ if(isopen)
+ return AlarmClockModel::GetInstance()->AlarmPlayerStart();
+ else
+ return AlarmClockModel::GetInstance()->AlarmPlayerStop();
+ }
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+}
static uint8_t graycard_flag = 0;\r
static uint8_t leaklight_flag = 0;\r
\r
-static uint16_t cycle_time_ms = 200;\r
-static uint16_t duty = 20;\r
-\r
static uint32_t aging_time = 0;\r
\r
static int CRC16_XMODEM(uint8_t *bytes,uint16_t length) {\r
\r
void ble_vibrator_check_timer_callback(void)\r
{\r
- vibrator_cyclicity(duty,cycle_time_ms,200);\r
+ uapi_vibrationModeSet(3);\r
}\r
\r
void ble_acc_check_timer_callback(void)\r
return;\r
}\r
\r
- if(ble_hrs_data > 10000)\r
+ if(ble_spo2_data > 10000)\r
{\r
red_buf = ble_spo2_data;\r
\r
}\r
PRINT("aging_t.mag_error : %d \r\n",aging_t.mag_error);\r
\r
- vibrator_cyclicity(20,200,2000);\r
+ uapi_vibrationModeSet(3);\r
aging_t.motor_error = 0;\r
PRINT("aging_t.motor_error : %d \r\n",aging_t.motor_error);\r
\r
switch(submode)\r
{\r
case BLE_TEST_CMD_COMMON_SUB_MODE_SYSTEM_VERSION:\r
- if (testitem == 0x02)\r
+ if (testitem == 0x01)\r
+ {\r
+ \r
+ uint8_t send_data[4]={0};\r
+ \r
+ uint8_t _major,_mid,_minor;\r
+ uapi_get_fw_version(&_major,&_mid,&_minor);\r
+ send_data[1] = _major;\r
+ send_data[2] = _mid;\r
+ send_data[3] = _minor;\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_SYSTEM_VERSION,\r
+ 0x01,\r
+ send_data,\r
+ 4);\r
+ } else if (testitem == 0x02)\r
{\r
//获取软件版本\r
uint8_t buildversion[128]={0};\r
\r
if(testitem == 0x01)\r
{\r
- //系统自检(未完成)\r
+ uint8_t send_data[2] = {0};\r
+ uint8_t id;\r
+ uint16_t tp_id;\r
+ uint32_t chip_id;\r
+ //系统自检\r
+ uapi_cywee_get_id(&id);\r
+ if(id != 0x44)\r
+ send_data[1] |= 1 << 1;\r
+\r
+ touch_getid(&tp_id);\r
+ PRINT("touch_getid : %2X \r\n",tp_id);\r
+ if(tp_id != 0x6456)\r
+ send_data[1] |= 1 << 4;\r
+\r
+ uapi_ppg_get_id(&id);\r
+ if(id != 0x65)\r
+ send_data[1] |= 1 << 3;\r
+\r
+ lcd_getid(&chip_id);\r
+ if(chip_id != 0x1133)\r
+ send_data[1] |= 1 << 5;\r
+\r
+ flash_getid(&chip_id);\r
+ if(chip_id == 0)\r
+ send_data[1] |= 1 << 6;\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE,\r
+ 0x01,\r
+ send_data,\r
+ 2);\r
}\r
\r
if(testitem == 0x02)\r
0x03,\r
&send_data,\r
1);\r
+ } else if(testitem == 0x04) \r
+ {\r
+ //进入ship mode\r
+ uint8_t send_data = 0x00;\r
+ \r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE,\r
+ 0x04,\r
+ &send_data,\r
+ 1);\r
+ LOS_Mdelay(100);\r
+ uapi_sys_shipmode();\r
+\r
} else if(testitem == 0x05)\r
{\r
- //恢复出厂设置(未完成)\r
+ //恢复出厂设置\r
uint8_t send_data = 0x00;\r
\r
- //bluetooth_factory_reset();\r
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0);\r
+\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE,\r
0x05,\r
break;\r
\r
case BLE_TEST_CMD_COMMON_SUB_MODE_POWERCONSUMPTION:\r
+ if(testitem == 0x01)\r
+ {\r
+ uint8_t send_data = 0x00;\r
+\r
+ power_on_cat1();\r
+ \r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWERCONSUMPTION,\r
+ 0x01,\r
+ &send_data,\r
+ 1);\r
+ } else if(testitem == 0x02) \r
+ {\r
+ uint8_t send_data = 0x00;\r
+\r
+ send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_WEAR_MODE_TEST); \r
+ send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST); \r
+\r
+ power_off_cat1();\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWERCONSUMPTION,\r
+ 0x02,\r
+ &send_data,\r
+ 1);\r
+ }\r
break;\r
\r
case BLE_TEST_CMD_COMMON_SUB_MODE_OTA:\r
\r
g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
\r
- osTimerStart(g_ble_vibrator_timer,200);\r
+ osTimerStart(g_ble_vibrator_timer,1000);\r
\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
//关闭马达\r
uint8_t send_data = 0x00;\r
\r
- cycle_time_ms = 200;\r
- duty = 20;\r
osTimerStop(g_ble_vibrator_timer);\r
osTimerDelete(g_ble_vibrator_timer);\r
\r
//打开周期性马达\r
uint8_t send_data = 0x00;\r
\r
- cycle_time_ms = data[1];\r
- duty = data[0];\r
-\r
g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
\r
- osTimerStart(g_ble_vibrator_timer,200);\r
+ osTimerStart(g_ble_vibrator_timer,1000);\r
\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
}\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD,\r
- 0x04,\r
+ *data,\r
&send_data,\r
1);\r
} else if(testitem == 0x05)\r
0x01,\r
tp_id,\r
3);\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //触摸版本\r
+ uint8_t send_data = 0x01;\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_TP,\r
+ 0x02,\r
+ &send_data,\r
+ 1);\r
+\r
+ \r
} else if(testitem == 0x03)\r
{\r
//触摸测试\r
case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC:\r
if(testitem == 0x01)\r
{\r
- //acc ID(未完成)\r
+ //acc ID\r
uint8_t acc_id[2] = {0};\r
- acc_id[1] = 0x44;\r
+ uapi_cywee_get_id(&acc_id[1]);\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC,\r
0x01,\r
- &acc_id,\r
+ acc_id,\r
2);\r
\r
} else if(testitem == 0x04)\r
//打开cat1\r
uint8_t send_data = 0x00;\r
\r
- uapi_cat1_power_on(1);\r
- uapi_cat1_reset(0);\r
+ power_on_cat1();\r
\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
//关闭cat1\r
uint8_t send_data = 0x00;\r
\r
- uapi_cat1_power_on(0);\r
- uapi_cat1_reset(1);\r
+ power_off_cat1();\r
\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
2);\r
}\r
break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER:\r
+ if(testitem == 0x01)\r
+ {\r
+\r
+ uint8_t send_data= 0;\r
+\r
+ uapi_check_speaker(1);\r
+ \r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
+ 0x01,\r
+ &send_data,\r
+ 1);\r
+ } else if(testitem == 0x02)\r
+ {\r
+\r
+ uint8_t send_data = 0;\r
+\r
+ uapi_check_speaker(0);;\r
+ \r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
+ 0x02,\r
+ &send_data,\r
+ 1);\r
+ }\r
+ break;\r
+\r
default:\r
printf("");\r
break;\r
#define BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CONTACTS 0x30
//软件测试 子模式ID 支付宝
#define BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ALIPAY 0x31
+//软件测试 子模式ID SPEAKER
+#define BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER 0x32
/**
*
* encode cmd msg string and send to ble
${CMAKE_CURRENT_SOURCE_DIR}/src/main_dml.c
${CMAKE_CURRENT_SOURCE_DIR}/src/test_api.c
${CMAKE_CURRENT_SOURCE_DIR}/src/board_yh601s.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/custom_factory_core.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/custom_factory_impl.c
${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_service.c
${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_at_cmd.c
${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_hal.c
+
# ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/examples/lis2doc_read_data_single.c
# ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/lis2doc_porting.c
)
false
)
-
if("SUPPORT_AT_CYWEE" IN_LIST DEFINES)
find_library(LIB_PATH_CWM_LIB_DML Lib/CWM_LIB_DML_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
find_library(LIB_PATH_CWM_LIB Lib/CWM_LIB_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB_DML} ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
endif()
-
+ #target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
+#endif()
build_component()
--- /dev/null
+#ifndef __CUSTOM_FACTORY_H__
+#define __CUSTOM_FACTORY_H__
+#include <stdarg.h>
+
+
+#ifndef __CWM_LIB_H__
+//Needed by custom_factory_core.c
+
+#define SCL_GET_CHIP_INFO 8
+#define SCL_GET_LIB_INFO 12
+#define SCL_CHIP_VENDOR_CONFIG 17
+
+typedef struct {
+ int iData[16];
+} SettingControl_t;
+
+int CWM_SettingControl(int CtrId, SettingControl_t *pData);
+
+typedef struct {
+ unsigned int sensorType;
+ unsigned int index;
+ float fData[16];
+ unsigned long timestamp_ns;
+ void *memData;
+} SensorEVT_t, *pSensorEVT_t;
+
+typedef void (*FN_SENSOR_LISTEN)(pSensorEVT_t);
+
+//void CWM_LibPostInit(FN_SENSOR_LISTEN pfn);
+#endif //__CWM_LIB_H__
+
+
+
+
+typedef struct {
+ int sec_write_len;
+ int sec_empty_value;
+ int sec_rewritable;
+ char *chip_name;
+} reburn_prepare_t;
+
+typedef struct {
+ void (*log_print)(const char* str);
+} print_api_t;
+
+int secFactory_init(int rand_seed);
+int secFactory_make_sec(char version, char *code, int *pCode);
+int secFactory_make_chipInfo(char *strChipInfo);
+
+void reburn_log_printf(const char* fmt, ...);
+
+int impl_prepare(reburn_prepare_t *var_out);
+int impl_checkMcuModel(void);
+int impl_stick_env_init(void);
+int impl_stick_env_deinit(void);
+int impl_sec_env_init(void);
+int impl_sec_env_deinit(void);
+int impl_sec_is_locked(void);
+int impl_sec_read(unsigned char *buf, unsigned int len);
+int impl_sec_erase(void);
+int impl_sec_write(unsigned char *buf, unsigned int len);
+
+#endif //__CM_SIMPLE_FACTORY_H__
--- /dev/null
+#include <stdio.h>\r
+#include <stdint.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <stdarg.h>\r
+\r
+#include "custom_factory.h"\r
+\r
+#define STS_OK 0\r
+#define STS_ERR_WRONG_MODEL -1\r
+#define STS_ERR_INVALID_LIB -2\r
+#define STS_ERR_SEC_READ_FAIL -3\r
+#define STS_ERR_MEDIUM_LOCKED -4\r
+#define STS_ERR_BLOCK_NOT_EMPTY -5\r
+#define STS_ERR_ERASE_FAILED -6\r
+#define STS_ERR_SEC_INIT -7\r
+#define STS_ERR_SEC_MAKE_CHIPINFO -8\r
+#define STS_ERR_SEC_MAKE_SEC -9\r
+#define STS_ERR_SEC_WRITE_LEN -10\r
+#define STS_ERR_SEC_WRITE -11\r
+\r
+static print_api_t m_reburn_print_api;\r
+static reburn_prepare_t m_var;\r
+\r
+\r
+\r
+void reburn_setup_api(print_api_t *api) {\r
+ m_reburn_print_api.log_print = api->log_print;\r
+}\r
+\r
+void reburn_log_printf(const char* fmt, ...) {\r
+ va_list argList;\r
+ uint8_t localBuf[255];\r
+\r
+ if (!m_reburn_print_api.log_print)\r
+ return;\r
+\r
+ va_start(argList, fmt);\r
+ vsnprintf((char *)localBuf, sizeof(localBuf), fmt,argList);\r
+ va_end(argList);\r
+\r
+ m_reburn_print_api.log_print((const char*)localBuf);\r
+}\r
+\r
+static int is_sec_empty(uint8_t* buf, uint32_t len) {\r
+ for (int i = 0 ; i < len ; i++) {\r
+ if (buf[i] != m_var.sec_empty_value) {\r
+ reburn_log_printf("is_sec_empty(): block %d not empty(0x%02x)\n", i, buf[i]);\r
+ return 0;\r
+ }\r
+ }\r
+\r
+ return 1;\r
+}\r
+\r
+static void dump_sec(uint8_t* buf, uint32_t len) {\r
+ uint32_t offset = 0, remainBytes = len;\r
+\r
+ if (len % 16 != 0)\r
+ return;\r
+\r
+ while (remainBytes >= 16) {\r
+ reburn_log_printf("%08x | %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", offset,\r
+ *(buf + (offset) + 0 ), *(buf + (offset) + 1 ), *(buf + (offset) + 2 ), *(buf + (offset) + 3 ),\r
+ *(buf + (offset) + 4 ), *(buf + (offset) + 5 ), *(buf + (offset) + 6 ), *(buf + (offset) + 7 ),\r
+ *(buf + (offset) + 8 ), *(buf + (offset) + 9 ), *(buf + (offset) + 10), *(buf + (offset) + 11),\r
+ *(buf + (offset) + 12), *(buf + (offset) + 13), *(buf + (offset) + 14), *(buf + (offset) + 15));\r
+ offset += 16;\r
+ remainBytes -= 16;\r
+ }\r
+}\r
+\r
+int reburn_second_dev(void) {\r
+ SettingControl_t scl;\r
+ char str_chipInfo[48];\r
+ unsigned char buf[256];\r
+ char EncodeData[512];\r
+ int len = 0, ret = 0;\r
+\r
+ impl_prepare(&m_var);\r
+\r
+ reburn_log_printf("[reburn_second_dev] Built at %s %s\n", __DATE__, __TIME__);\r
+ printf("[reburn_second_dev] Built at \r\n");\r
+ if (!impl_checkMcuModel()) {\r
+ reburn_log_printf("cannot reburn: wrong model\n");\r
+ printf("cannot reburn: wrong model \r\n");\r
+ return STS_ERR_WRONG_MODEL;\r
+ }\r
+\r
+ memset(&scl, 0, sizeof(scl));\r
+ scl.iData[0] = 1;\r
+ CWM_SettingControl(SCL_GET_LIB_INFO, &scl);\r
+ if (scl.iData[5] < 3000) {\r
+ reburn_log_printf("%d Not a valid reburn library\n", scl.iData[5]);\r
+ printf("%d Not a valid reburn library\n", scl.iData[5]);\r
+ return STS_ERR_INVALID_LIB;\r
+ }\r
+ reburn_log_printf("model:%s version:%d.%d.%d.%d product:%d\n", m_var.chip_name, scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5]);\r
+ printf("model:%s version:%d.%d.%d.%d product:%d\n", m_var.chip_name, scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5]);\r
+\r
+ impl_sec_env_init();\r
+\r
+ impl_stick_env_init();\r
+\r
+ CWM_LibPostInit(NULL);\r
+\r
+ if (secFactory_init(0) != 1) {\r
+ printf("secFactory_init fail\n");\r
+ return STS_ERR_SEC_INIT;\r
+ }\r
+\r
+ impl_stick_env_deinit();\r
+\r
+ impl_sec_env_deinit();\r
+\r
+ memset(&scl, 0, sizeof(scl));\r
+ scl.iData[0] = 1;\r
+ scl.iData[1] = 1;\r
+ scl.iData[2] = (int)&str_chipInfo[0];\r
+ scl.iData[3] = sizeof(str_chipInfo);\r
+ scl.iData[4] = 0;\r
+ scl.iData[5] = 0;\r
+ scl.iData[6] = 0;\r
+ CWM_SettingControl(SCL_GET_CHIP_INFO, &scl);\r
+ printf("have_security = %d.%d ret_buff_size = %d\n", scl.iData[5], scl.iData[6], scl.iData[4]);\r
+ printf("[getinfo]chipInfo=%s\n", str_chipInfo);\r
+ if (scl.iData[5] == 1) {\r
+ printf("valid security found\n");\r
+ return STS_OK;\r
+ }\r
+\r
+ memset(buf, 0x0, sizeof(buf));\r
+ ret = impl_sec_read(buf, m_var.sec_write_len);\r
+ if (ret != 1) {\r
+ printf("cannot reburn: read error(%d)\n", ret);\r
+ return STS_ERR_SEC_READ_FAIL;\r
+ }\r
+ dump_sec(buf, m_var.sec_write_len);\r
+\r
+ if (impl_sec_is_locked()) {\r
+ printf("cannot reburn: locked\n");\r
+ return STS_ERR_MEDIUM_LOCKED;\r
+ }\r
+\r
+ if (!is_sec_empty(buf, m_var.sec_write_len)) {\r
+ if (!m_var.sec_rewritable) {\r
+ printf("cannot reburn: block not empty\n");\r
+ return STS_ERR_BLOCK_NOT_EMPTY;\r
+ }\r
+ ret = impl_sec_erase();\r
+ if (ret != 1) {\r
+ printf("cannot reburn: erase error(%d)\n", ret);\r
+ return STS_ERR_ERASE_FAILED;\r
+ }\r
+ }\r
+\r
+ if (secFactory_make_chipInfo(str_chipInfo) != 1) {\r
+ printf("secFactory_make_chipInfo fail\n");\r
+ return STS_ERR_SEC_MAKE_CHIPINFO;\r
+ }\r
+ printf("[makesec]chipInfo=%s\n", str_chipInfo);\r
+\r
+ memset(EncodeData, 0, sizeof(EncodeData));\r
+ ret = secFactory_make_sec(0x01, EncodeData, &len);\r
+ if (ret != 1) {\r
+ printf("secFactory_make_sec fail\n");\r
+ return STS_ERR_SEC_MAKE_SEC;\r
+ }\r
+\r
+ if (len < m_var.sec_write_len) {\r
+ printf("sec length error(%d/%d)\n", len, m_var.sec_write_len);\r
+ return STS_ERR_SEC_WRITE_LEN;\r
+ }\r
+\r
+ ret = impl_sec_write((uint8_t*)&EncodeData[0], len);\r
+ if (ret != 1) {\r
+ printf("cannot reburn: write error(%d)\n", ret);\r
+ return STS_ERR_SEC_WRITE;\r
+ }\r
+\r
+ printf("reburn complete\n");\r
+\r
+ return STS_OK;\r
+}\r
--- /dev/null
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include "custom_factory.h"\r
+\r
+#include "osal_interrupt.h"\r
+#include "gpio.h"\r
+#include "flash.h"\r
+\r
+extern int cm__hs1__init(void);\r
+extern int cm__hs1__deinit(void);\r
+\r
+#define OTP_RW_OFFSET (0x100)\r
+\r
+static reburn_prepare_t m_chipCfg = {\r
+ .sec_write_len = 16,\r
+ .sec_empty_value = 0x00,\r
+ .sec_rewritable = 0,\r
+ .chip_name = "YH601S"\r
+};\r
+\r
+static uint32_t irqMask = 0;\r
+\r
+int impl_prepare(reburn_prepare_t *var_out) {\r
+ memcpy(var_out, (void*)&m_chipCfg, sizeof(m_chipCfg));\r
+\r
+ return 1;\r
+}\r
+\r
+int impl_checkMcuModel() {\r
+ return 1;\r
+}\r
+\r
+int impl_sec_env_init() {\r
+ return 1;\r
+}\r
+\r
+int impl_stick_env_init() {\r
+ SettingControl_t scl;\r
+ memset(&scl, 0, sizeof(scl));\r
+ scl.iData[0] = 1;\r
+ scl.iData[1] = 31010100;\r
+ CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl);\r
+\r
+ irqMask = osal_irq_lock();\r
+\r
+ if (cm__hs1__init() != 1) {\r
+ reburn_log_printf("%s: failed\n", __FUNCTION__);\r
+ return -1;\r
+ }\r
+ return 1;\r
+}\r
+\r
+int impl_sec_is_locked() {\r
+ return 0;\r
+}\r
+\r
+int impl_stick_env_deinit() {\r
+ if (cm__hs1__deinit() != 1) {\r
+ reburn_log_printf("%s: failed\n", __FUNCTION__);\r
+ return -1;\r
+ }\r
+\r
+ osal_irq_restore(irqMask);\r
+\r
+ return 1;\r
+}\r
+\r
+int impl_sec_env_deinit() {\r
+ return 1;\r
+}\r
+\r
+int impl_sec_read(unsigned char *buf, unsigned int len) {\r
+ if (!buf) {\r
+ reburn_log_printf("[read_security] null buf\n");\r
+ return -1;\r
+ }\r
+\r
+ if (uapi_efuse_read_buffer(buf, OTP_RW_OFFSET, m_chipCfg.sec_write_len) != 0) {\r
+ return -2;\r
+ }\r
+\r
+ return 1;\r
+}\r
+\r
+int impl_sec_write(unsigned char *buf, unsigned int len) {\r
+ if (!buf) {\r
+ reburn_log_printf("[write_security] null buf\n");\r
+ return -1;\r
+ }\r
+\r
+ if (uapi_efuse_write_buffer(OTP_RW_OFFSET, buf, m_chipCfg.sec_write_len) != 0) {\r
+ return -2;\r
+ }\r
+\r
+ return 1;\r
+}\r
+\r
+int impl_sec_erase() {\r
+ return 1;\r
+}\r
// CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
// return;
// }
- t->x = gxyz_t_queue[left_falg].x;
- t->y = gxyz_t_queue[left_falg].y;
- t->z = gxyz_t_queue[left_falg].z;
+ t->x = gxyz_t.x;
+ t->y = gxyz_t.y;
+ t->z = gxyz_t.z;
//osal_mutex_unlock(&mutex_gsenson_queue);
}
cywee_msg_callback_t cywee_func;
switch (sensorEVT->sensorType) {
case IDX_ACCEL:
+ gxyz_t.x = sensorEVT->fData[0];
+ gxyz_t.y = sensorEVT->fData[1];
+ gxyz_t.z = sensorEVT->fData[2];
- if(get_acc_swtich)
- {
// CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
// sensorEVT->fData[0],
// sensorEVT->fData[1],
// sensorEVT->fData[2]
// );
+ if(get_acc_swtich)
+ {
if(num_falg==25)
{
left_falg++;
}
cywee_installized = 1;
+ //reburn_second_dev();
int i;
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
\r
int cywee_data[2] = {0};\r
\r
-int wear_mode_status = 0;\r
+int wear_mode_status = -1;\r
\r
//////// spo2 para and switches\r
const uint8_t COUNT_BLOCK_NUM = 25; //delay the block of some single good signal after a series of bad signal\r
#ifdef FD230
#include "soundandvibration/include/SoundAndVibrationVolumeSettingC.h"
#include "networkandcall/include/NetworkAndCallC.h"
+#include "producttest/include/testspeakerC.h"
#endif
#include <dirent.h>
#include <unistd.h>
return ERRCODE_SUCC;
}
-#include "vibrator.h"
-
-void vibrator_cyclicity(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_time_ms)
-{
- g_VibratorFunc(duty,cycle_time_ms,duration_time_ms);
-}
-
void uapi_take_to_wake(int cmd)
{
#include "tyhx_hrs_custom.h"
-void get_ppg_id(void)
+void uapi_ppg_get_id(uint8_t *chip_id)
{
- tyhx_poweron();
- hx3695_chip_check();
- tyhx_poweroff();
+ custom_i2c_read_regs(HX3695_I2C_DEV_8ADDR,0x00,1,chip_id,1,I2C_BUS_2);
}
+
#include "hal_i2c.h"
#include "i2c.h"
#define CUSTOM_I2C_TIME_MAX 3
stop_custom_ble_service();
//关闭cat1
- uapi_cat1_power_on(0);
- uapi_cat1_reset(1);
+ power_off_cat1();
//停止心率周期检测
start_custom_ble_service();
//打开cat1
- uapi_cat1_power_on(1);
- uapi_cat1_reset(0);
-
+ power_on_cat1();
//开启心率周期检测
}
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
}
-void uapi_cywee_get_id(void)
+void uapi_cywee_get_id(uint8_t *id)
{
- uint8_t id = 0;
- custom_i2c_read_regs(0x19,0x0FU,1,&id,1,I2C_BUS_2);
- PRINT("cywee id : 0x%X \r\n",id);
+ custom_i2c_read_regs(0x19,0x0FU,1,id,1,I2C_BUS_2);
}
+
void uapi_cywee_get_chipinfo(char *databuf,uint8_t len)
{
cywee_get_chipinfo(databuf,len);
return ret;
}
-#endif
\ No newline at end of file
+#endif
+
+int uapi_check_speaker(bool isopen)
+{
+ #ifdef FD230
+ return check_speaker(isopen);
+ #endif
+}
\ No newline at end of file
//抬腕亮屏
void uapi_take_to_wake(int cmd);
-//开关马达
-void vibrator_cyclicity(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_time_ms);
//获取lcd id
void lcd_getid(uint32_t *id);
void flash_getid(uint32_t *id);
void flash_erase(void);
-//进入recovery
-int enter_recovery(void);
-//设置bmp图片
-int set_bmp(void);
-
void get_gsensor_single(uint8_t *databuf);
uint32_t custom_i2c_suspend(void);
uint32_t custom_i2c_resume(void);
-void uapi_cywee_get_id(void);
+void uapi_cywee_get_id(uint8_t *id);
int custom_exit_lpm(void);
void uapi_cywee_get_sleep_data(void);
void uapi_cywee_set_user_info(int user_info[5]);
void uapi_cywee_time_sync(void);
void uapi_cywee_get_chipinfo(char *databuf,uint8_t len);
-
+void uapi_ppg_get_id(uint8_t *chip_id);
#include "custom_utilscpp.h"
return ERRCODE_SUCC;
}
-static uint32_t custom_mmc5603_getid(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
-{
-
- UNUSED(strCommonCmd);
-
- //mmc5603_getid();
-
- return ERRCODE_SUCC;
-}
-
static uint32_t custom_mmc5603_getdata(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
{
UNUSED(strCommonCmd);
-
- get_ppg_id();
+ uint8_t chip_id;
+ uapi_ppg_get_id(&chip_id);
return ERRCODE_SUCC;
}
{
UNUSED(strCommonCmd);
-
- uapi_cywee_get_id();
+ uint8_t id;
+ uapi_cywee_get_id(&id);
return ERRCODE_SUCC;
}
{ (char *)"AT^SCREENSTATE", custom_touch_getstate, (char *)" " },
- { (char *)"AT^MMC5603ID", custom_mmc5603_getid, (char *)" " },
-
{ (char *)"AT^MMC5603GETDATA", custom_mmc5603_getdata, (char *)" " },
{ (char *)"AT^CHARGESTATE", custom_charge_getstate, (char *)" " },