#include "uart_slip.h"\r
#endif\r
\r
+#ifdef ENABLE_CUSTOM_I2C\r
+#include "custom_utils.h"\r
+#endif\r
+\r
#define EMMC_BASE_ADDR 0x52062000\r
#define TASK_PRIORITY_APP (osPriority_t)(17)\r
#define TICK_TEN_MS (10U)\r
uapi_battery_init();\r
#endif\r
\r
-#ifdef MAG_MMC5603\r
- uapi_mag_service_init();\r
+#ifdef ENABLE_CUSTOM_I2C\r
+ errcode_t result = custom_iic_init();\r
+ if(result != SUCC)\r
+ PRINT("custom_iic_init failed !!! \r\n");\r
+ else\r
+ {\r
+ PRINT("custom_iic_init succed !!! \r\n");\r
+ #ifdef MAG_MMC5603\r
+ uapi_mag_service_init();\r
+ #endif\r
+\r
+ #ifdef SUPPORT_PPG_SERVICE\r
+ uapi_ppg_service_init();\r
+ #endif\r
+\r
+ #ifdef ENABLE_CYWEE\r
+ uapi_cywee_service_init();\r
+ #endif \r
+\r
+ }\r
+\r
#endif\r
+\r
+// #ifdef MAG_MMC5603\r
+// uapi_mag_service_init();\r
+// #endif\r
#ifdef ACC_LIS2DOC\r
uapi_acc_service_init();\r
#endif\r
\r
\r
-#ifdef SUPPORT_PPG_SERVICE\r
- uapi_ppg_service_init();\r
-#endif\r
+// #ifdef SUPPORT_PPG_SERVICE\r
+// uapi_ppg_service_init();\r
+// #endif\r
\r
#ifdef ENABLE_SLIP\r
slip_uart_init();\r
\r
uapi_custom_cmd_service_init();\r
\r
-#ifdef ENABLE_CYWEE\r
- uapi_cywee_service_init();\r
-#endif \r
+// #ifdef ENABLE_CYWEE\r
+// uapi_cywee_service_init();\r
+// #endif \r
\r
#ifdef SUPPORT_ALIPAY_SEC\r
uapi_alipay_svr_init();\r
cJSON *data;
}
-void add_addressbookToRead(char *data)//转化用于·c文件
+void add_addressbookToRead(char *data)
{
- char *name=NULL;
- char *phone=NULL;
- name=strtok(data,",");
- phone=strtok(NULL,NULL);//data+strlen(name);
- PRINT("phone : %s \r\n",phone);
- OHOS::add_addressbook_by_AT(name,phone);
- return;
-}
+ if(data == NULL)
+ {
+ printf("Error: data is NULL\n");
+ return;
+ }
+
+ char *name = NULL;
+ char *phone = NULL;
+ name = strtok(data, ",");
+
+ if(name == NULL)
+ {
+ printf("Error: Unable to get name\n");
+ return;
+ }
+
+ phone = strtok(NULL, ",");
+ if(phone == NULL)
+ {
+ printf("Error: Unable to get phone number\n");
+ return;
+ }
+ PRINT("phone : %s \r\n", phone);
+ OHOS::add_addressbook_by_AT(name, phone);
+
+ return;
+}
void set_languaage(uint32_t id)
{
//while(aging_t.flag == 0xfdfd0002)\r
{\r
uint32_t msc;\r
- get_rtc(&msc);\r
+ uapi_get_timestampe_ss(&msc);\r
aging_t.enter_age_time = msc;\r
PRINT("aging_t.enter_age_time : %d \r\n",aging_t.enter_age_time);\r
aging_t.executions_num++;\r
aging_t.restart_num = 0;\r
PRINT("aging_t.restart_num : %d \r\n",aging_t.restart_num);\r
\r
- uint16_t before_block_num;\r
+ uint16_t before_block_num = 0;\r
struct nand_driver_struct *nandflash_driver;\r
nandflash_driver = get_nand_flash();\r
for (uint32_t i = 0; i < nandflash_driver->total_block; i++) \r
}\r
PRINT("aging_t.flash_res_error : %d \r\n",aging_t.flash_res_error);\r
\r
- uint16_t after_block_num;\r
+ uint16_t after_block_num = 0;\r
nandflash_driver = get_nand_flash();\r
for (uint32_t i = 0; i < nandflash_driver->total_block; i++) \r
{\r
\r
aging_t.flash_bad_block_num = after_block_num - before_block_num;\r
\r
- get_rtc(&msc);\r
+ uapi_get_timestampe_ss(&msc);\r
aging_t.age_time = msc;\r
PRINT("aging_t.age_time : %d \r\n",aging_t.age_time);\r
aging_time -= (aging_t.age_time - aging_t.enter_age_time);\r
//获取RTC\r
uint8_t time_stamp[5] = {0};\r
uint32_t msc = 0;\r
- get_rtc(&msc);\r
+ uapi_get_timestampe_ss(&msc);\r
\r
time_stamp[1] = (uint8_t)((msc & 0XFF000000) >> 24);\r
time_stamp[2] = (uint8_t)((msc & 0X00FF0000) >> 16);\r
'PPG_HX3695',
# 'ACC_LIS2DOC',
'ENABLE_CYWEE',
+ 'ENABLE_CUSTOM_I2C',
'SUPPORT_AT_CYWEE',
'MAG_MMC5603',
'ENABLE_VIBRATOR',
//默认开启Cat1 然后再根据配置决定是否关闭.
//默认不开启 ppg checkid失败,原因未知,暂时开机开启cat1
-#define DEFAULT_POWERON_CAT1 1
+#define DEFAULT_POWERON_CAT1 0
//需要配置默认输出的,以及需要配置默认输入中断函数的。
const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
-static errcode_t cywee_i2c_init(void)
-{
- errcode_t result;
- /* init i2c */
- if ( g_cywee_installed == 1 )
- {
- // CWM_OS_dbgPrintf("cywee cywee_i2c_init already installed \n");
- return ERRCODE_SUCC;
-
- }
-
- result = uapi_i2c_master_init(CYWEE_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
- if (result != ERRCODE_SUCC) {
- CWM_OS_dbgPrintf("cywee i2c init fail! ret=0x%x\n", result);
- return ERRCODE_FAIL;
- }
-
- CWM_OS_dbgPrintf("cywee:i2c_id = %d i2c_speed = %d \r\n", CYWEE_I2C_BUS, 400000);
-
- g_cywee_installed = 1;
-
- return ERRCODE_SUCC;
-}
-
-int CWM_OS_i2cRead(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- cywee_i2c_init();
-
- write_data = (uint8_t *)osal_kmalloc(regLength, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- CWM_OS_dbgPrintf("cywee send buff malloc fail! %d\n",regLength);
- goto error;
- }
-
- if( regLength == 2)
- {
- write_data[0] = ((uint8_t*)®)[0];
- write_data[1] = ((uint8_t*)®)[1];
- }else{
- write_data[0] = (uint8_t)reg;
- }
-
-
- data.send_buf = write_data;
- data.send_len = regLength;
- data.receive_buf = readData;
- data.receive_len = readDataSize;
-
- for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
- if (ret == ERRCODE_SUCC) {
- break;
- }
- }
- if (ret != ERRCODE_SUCC) {
- CWM_OS_dbgPrintf("CWM_OS_i2cRead cywee data read fail! busIndex %d, slaveAddr 0x%x, regaddr 0x%X,reglength %d, ret=0x%x\n",busIndex, slaveAddr,reg,regLength, ret);
- }
- osal_kfree(write_data);
-error:
- return (ret>0) ? ret*-1: ret;
-}
-
-int CWM_OS_i2cWrite(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- uint16_t send_len;
- uint8_t *data_buf=writeData;
- uint16_t data_len=writeDataSize;
+// int CWM_OS_i2cWrite(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
+// {
+// errcode_t ret;
+// uint32_t retry;
+// i2c_data_t data;
+// uint8_t *write_data = NULL;
+// uint16_t send_len;
+// uint8_t *data_buf=writeData;
+// uint16_t data_len=writeDataSize;
- cywee_i2c_init();
- send_len = data_len + regLength;
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- CWM_OS_dbgPrintf("cywee CWM_OS_i2cWrite send buff malloc fail %d!\n",send_len);
- goto error;
- }
-
- if( regLength == 2)
- {
- write_data[0] = ((uint8_t*)®)[0];
- write_data[1] = ((uint8_t*)®)[1];
- }else{
- write_data[0] = (uint8_t)reg;
- }
- ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
- if (ret != EOK) {
- CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
- goto free_mem;
- }
-
- data.send_buf = write_data;
- data.send_len = send_len;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(CYWEE_I2C_BUS, slaveAddr, &data);
- if (ret == ERRCODE_SUCC) {
- break;
- }
- }
- if (ret != ERRCODE_SUCC) {
- CWM_OS_dbgPrintf("CWM_OS_i2cWrite cywee data write fail! ret=0x%x\n", ret);
- }
-free_mem:
- osal_kfree(write_data);
-error:
- return (ret>0) ? ret*-1: ret;
-}
-
-int CWM_OS_i2cTransfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- int16_t write_len = 0;
-
- cywee_i2c_init();
- write_len = regLength + writeDataSize;
- write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- PRINT_ERR("cywee send buff malloc fail!");
- goto error;
- }
-
- if( regLength == 2)
- {
- write_data[0] = ((uint8_t*)®)[0];
- write_data[1] = ((uint8_t*)®)[1];
- }else{
- write_data[0] = (uint8_t)reg;
- }
-
- ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
- if (ret != EOK) {
- CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
- goto free_mem;
- }
- data.send_buf = write_data;
- data.send_len = write_len;
- data.receive_buf = readData;
- data.receive_len = readDataSize;
-
- for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
- if (ret == ERRCODE_SUCC) {
- break;
- }
- }
- if (ret != ERRCODE_SUCC) {
- CWM_OS_dbgPrintf("CWM_OS_i2cTransfer cywee data read fail! ret=0x%x\n", ret);
- }
+// cywee_i2c_init();
+// send_len = data_len + regLength;
+// write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
+// if (write_data == NULL) {
+// CWM_OS_dbgPrintf("cywee CWM_OS_i2cWrite send buff malloc fail %d!\n",send_len);
+// goto error;
+// }
+
+// if( regLength == 2)
+// {
+// write_data[0] = ((uint8_t*)®)[0];
+// write_data[1] = ((uint8_t*)®)[1];
+// }else{
+// write_data[0] = (uint8_t)reg;
+// }
+// ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
+// if (ret != EOK) {
+// CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
+// goto free_mem;
+// }
+
+// data.send_buf = write_data;
+// data.send_len = send_len;
+// data.receive_buf = NULL;
+// data.receive_len = 0;
+
+// for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
+// ret = uapi_i2c_master_write(CYWEE_I2C_BUS, slaveAddr, &data);
+// if (ret == ERRCODE_SUCC) {
+// break;
+// }
+// }
+// if (ret != ERRCODE_SUCC) {
+// CWM_OS_dbgPrintf("CWM_OS_i2cWrite cywee data write fail! ret=0x%x\n", ret);
+// }
+// free_mem:
+// osal_kfree(write_data);
+// error:
+// return (ret>0) ? ret*-1: ret;
+// }
-free_mem:
- osal_kfree(write_data);
-error:
- return (ret>0) ? ret*-1: ret;
-}
+// int CWM_OS_i2cTransfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
+// {
+// errcode_t ret;
+// uint32_t retry;
+// i2c_data_t data;
+// uint8_t *write_data = NULL;
+// int16_t write_len = 0;
+
+// cywee_i2c_init();
+// write_len = regLength + writeDataSize;
+// write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
+// if (write_data == NULL) {
+// PRINT_ERR("cywee send buff malloc fail!");
+// goto error;
+// }
+
+// if( regLength == 2)
+// {
+// write_data[0] = ((uint8_t*)®)[0];
+// write_data[1] = ((uint8_t*)®)[1];
+// }else{
+// write_data[0] = (uint8_t)reg;
+// }
+
+// ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
+// if (ret != EOK) {
+// CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
+// goto free_mem;
+// }
+// data.send_buf = write_data;
+// data.send_len = write_len;
+// data.receive_buf = readData;
+// data.receive_len = readDataSize;
+
+// for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
+// ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
+// if (ret == ERRCODE_SUCC) {
+// break;
+// }
+// }
+// if (ret != ERRCODE_SUCC) {
+// CWM_OS_dbgPrintf("CWM_OS_i2cTransfer cywee data read fail! ret=0x%x\n", ret);
+// }
+
+// free_mem:
+// osal_kfree(write_data);
+// error:
+// return (ret>0) ? ret*-1: ret;
+// }
//实际精度只能到1ms
void CWM_OS_uSleep(uint32_t time)
CWM_SettingControl(SCL_USER_INFO, &scl);
}
-void time_sync(void)
+void cywee_inactivity_time_sync(void)
{
time_t rawtime;
struct tm* timeinfo;
void cyw_inactivity_mode_change(int mode)
{
- time_sync();
+ cywee_inactivity_time_sync();
switch (mode)
{
//無作用
// CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
// return;
// }
- CWM_OS_dbgPrintf("x=%.3f, y=%.3f, z=%.3f\n", gxyz_t_queue[left_falg].x, gxyz_t_queue[left_falg].y, gxyz_t_queue[left_falg].z);
+ //CWM_OS_dbgPrintf("x=%.3f, y=%.3f, z=%.3f\n", gxyz_t_queue[left_falg].x, gxyz_t_queue[left_falg].y, gxyz_t_queue[left_falg].z);
t[i].x= gxyz_t_queue[left_falg].x;
t[i].y= gxyz_t_queue[left_falg].y;
t[i].z= gxyz_t_queue[left_falg].z;
os_api api = {
.GetTimeNs = CWM_OS_GetTimeNs,
.dbgOutput = CWM_OS_dbgOutput,
- .i2cRead = CWM_OS_i2cRead,
- .i2cWrite = CWM_OS_i2cWrite,
+ .i2cRead = custom_i2c_read_regs,
+ .i2cWrite = custom_i2c_write_reg,
.uSleep = CWM_OS_uSleep,
.free = CWM_OS_free,
.malloc = CWM_OS_malloc,
OsAPI apiOS = {
.GetTimeNs = CWM_OS_GetTimeNs,
.dbgOutput = CWM_OS_dbgOutput,
- .i2cRead = CWM_OS_i2cRead,
- .i2cWrite = CWM_OS_i2cWrite,
+ .i2cRead = custom_i2c_read_regs,
+ .i2cWrite = custom_i2c_write_reg,
.uSleep = CWM_OS_uSleep,
.free = CWM_OS_free,
.malloc = CWM_OS_malloc,
- .i2cTransfer = CWM_OS_i2cTransfer,
+ .i2cTransfer = custom_i2c_transfer,
.restoreData = CWM_OS_restoreData,
.saveData = CWM_OS_saveData,
.spiRead = NULL,
+/*\r
+ * @Author: penglei 1624952103@qq.com\r
+ * @Date: 2024-03-27 09:07:00\r
+ * @LastEditors: penglei 1624952103@qq.com\r
+ * @LastEditTime: 2024-04-30 09:36:57\r
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/mag/mmc5603/mmc_customer.c\r
+ * @Description: \r
+ * \r
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. \r
+ */\r
#include "mmc_customer.h"\r
#include "osal_timer.h"\r
#include "osal_mutex.h"\r
#include "hal_i2c.h"\r
#include "soc_osal.h"\r
#include "tcxo.h"\r
-#define MMC5603_I2C_BUS I2C_BUS_2\r
-#define MMC5603_I2C_TIME_MAX 3\r
+#include "custom_utils.h"\r
+\r
void mmc5603_Delay_Ms(int cnt)\r
{\r
/* cnt is the time to wait */\r
\r
return;\r
}\r
-static uint8_t g_mmc_installed = 0;\r
-/*\r
- * @brief platform specific initialization (platform dependent)\r
- */\r
-static void mmc5603_i2c_init(void)\r
-{\r
- errcode_t result;\r
- /* init i2c */\r
- if ( g_mmc_installed == 1 )\r
- return ;\r
- \r
- result = uapi_i2c_master_init(MMC5603_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */\r
- if (result != ERRCODE_SUCC) {\r
- MMC_ERROR("mmc5603 i2c init fail! ret=0x%x", result);\r
- return ;\r
- }\r
-\r
- MMC_WARNING("mmc5603:i2c_id = %d i2c_speed = %d \r\n",\r
- MMC5603_I2C_BUS, 400000);\r
- g_mmc_installed = 1;\r
- return ;\r
-}\r
\r
-/*\r
- * @brief Write generic device register (platform dependent)\r
- *\r
- * @param handle customizable argument. In this examples is used in\r
- * order to select the correct sensor bus handler.\r
- * @param reg register to write\r
- * @param bufp pointer to data to write in register reg\r
- * @param len number of consecutive register to write\r
- *\r
- */\r
-static int32_t mmc5603_platform_write(unsigned char i2c_add, uint8_t reg, const uint8_t *bufp,\r
- uint16_t len)\r
-{\r
-\r
- errcode_t ret;\r
- uint32_t retry;\r
- i2c_data_t data;\r
- uint8_t *write_data = NULL;\r
- uint16_t send_len;\r
- uint8_t *data_buf=bufp;\r
- uint16_t data_len=len;\r
- \r
- mmc5603_i2c_init();\r
- send_len = data_len + sizeof(uint8_t);\r
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);\r
- if (write_data == NULL) {\r
- MMC_ERROR("mmc5603 send buff malloc fail!");\r
- return ERRCODE_FAIL;\r
- }\r
- write_data[0] = reg;\r
- ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);\r
- if (ret != EOK) {\r
- MMC_ERROR("mmc5603 send_buf content copy fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
-\r
- data.send_buf = write_data;\r
- data.send_len = send_len;\r
- data.receive_buf = NULL;\r
- data.receive_len = 0;\r
-\r
- for (retry = 0; retry < MMC5603_I2C_TIME_MAX; retry++) {\r
- ret = uapi_i2c_master_write(MMC5603_I2C_BUS, i2c_add, &data);\r
- if (ret == ERRCODE_SUCC) {\r
- break;\r
- }\r
- }\r
- if (ret != ERRCODE_SUCC) {\r
- MMC_ERROR("mmc5603 data write fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
-\r
- osal_kfree(write_data);\r
- return 0;\r
-}\r
-\r
-/*\r
- * @brief Read generic device register (platform dependent)\r
- *\r
- * @param handle customizable argument. In this examples is used in\r
- * order to select the correct sensor bus handler.\r
- * @param reg register to read\r
- * @param bufp pointer to buffer that store the data read\r
- * @param len number of consecutive register to read\r
- *\r
- */\r
-static int32_t mmc5603_platform_read( unsigned char i2c_add,uint8_t reg, uint8_t *bufp,\r
- uint16_t len)\r
-{\r
- errcode_t ret;\r
- uint32_t retry;\r
- i2c_data_t data;\r
-\r
- mmc5603_i2c_init();\r
- memset_s(bufp, len, 0, len);\r
- data.send_buf = ®\r
- data.send_len = 1;\r
- data.receive_buf = bufp;\r
- data.receive_len = len;\r
-\r
- for (retry = 0; retry < MMC5603_I2C_TIME_MAX; retry++) {\r
- ret = uapi_i2c_master_writeread(MMC5603_I2C_BUS, i2c_add, &data);\r
- if (ret == ERRCODE_SUCC) {\r
- break;\r
- }\r
- }\r
- if (ret != ERRCODE_SUCC) {\r
- MMC_ERROR("mmc5603 data read fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
-\r
- return ERRCODE_SUCC;\r
-}\r
int I2C_Write_Reg(unsigned char i2c_add, unsigned char reg_add, unsigned char cmd)\r
{\r
/* i2c_add is the 7-bit i2c address of the sensor\r
* I2C operating successfully, return 1, otherwise return 0;\r
*/\r
\r
- if ( ERRCODE_SUCC == mmc5603_platform_write(i2c_add,reg_add,&cmd,1))\r
+ if ( ERRCODE_SUCC == custom_i2c_write_reg(i2c_add,reg_add,1,&cmd,1,I2C_BUS_2))\r
{\r
return 1;\r
}else{\r
* data is the first address of the buffer that need to store the register value\r
* I2C operating successfully, return 1, otherwise return 0; \r
*/\r
- \r
- if ( ERRCODE_SUCC == mmc5603_platform_read(i2c_add,reg_add,data,1))\r
+ \r
+ if ( ERRCODE_SUCC == custom_i2c_read_regs(i2c_add,reg_add,1,data,1,I2C_BUS_2))\r
{\r
return 1;\r
}else{\r
* I2C operating successfully, return 1, otherwise return 0; \r
*/\r
\r
- if ( ERRCODE_SUCC == mmc5603_platform_read(i2c_add,reg_add,data,num))\r
+ if ( ERRCODE_SUCC == custom_i2c_read_regs(i2c_add,reg_add,1,data,num,I2C_BUS_2))\r
{\r
return 1;\r
}else{\r
\r
#include "cywee_hal.h"\r
#include "cywee_service.h"\r
+#include "custom_utils.h"\r
+\r
\r
FT_CUSTOM_RESULTS_t hrsresult ={0};\r
\r
// i2c 写函数, 客户需填写, 地址0x44(7bit)\r
bool hx3695_write_reg(uint8_t addr, uint8_t data)\r
{\r
-\r
- tyhx_write_reg(addr,data);\r
+ custom_i2c_write_reg(HX3695_I2C_DEV_8ADDR,addr,1,&data,1,I2C_BUS_2);\r
return true;\r
}\r
\r
{\r
uint8_t data_buf = 0;\r
\r
- tyhx_read_regs(addr,&data_buf,1);\r
+ custom_i2c_read_regs(HX3695_I2C_DEV_8ADDR,addr,1,&data_buf,1,I2C_BUS_2);\r
return data_buf;\r
}\r
\r
bool hx3695_brust_read_reg(uint8_t addr, uint8_t *buf, uint16_t length)\r
{\r
//TYHX_LOG("brust read\r\n");\r
- tyhx_read_regs(addr,buf,length);\r
+ custom_i2c_read_regs(HX3695_I2C_DEV_8ADDR,addr,1,buf,length,I2C_BUS_2);\r
return true;\r
}\r
\r
\r
if (chip_id == 0x65)\r
{\r
- printf("hx3695_chip_check ok chip_id: 0x%x \r\n",chip_id);\r
return chip_id;\r
}\r
}\r
\r
- printf(" hx3695_chip_check fail! chip_id: 0x%x \r\n", chip_id);\r
-\r
return chip_id;\r
}\r
\r
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-22 21:03:16
+ * @LastEditTime: 2024-04-30 09:36:27
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
// ppg_service_running_stat = true;
uapi_pm_control(PM_APP_WAKE_NEEDED);
tyhx_poweron();
+ custom_i2c_reset();
hx3695_init(md);
} else {
uint8_t spo2_no_living_dur = 0; //used to increase no living dur, when no living status detected
int tyhx_long_timer_tick = 400;
-
-typedef struct {
- i2c_bus_t i2c_id;
- uint32_t i2c_speed;
-} hx3695_ctrl_attr;
-
-static hx3695_ctrl_attr g_hx3695_ctl_handler={HX3695_I2C_BUS,400000};
-static uint8_t g_hx3695_installed = 0;
-static errcode_t hx3695_i2c_init(void)
-{
- errcode_t result;
- /* init i2c */
- if ( g_hx3695_installed == 1 )
- return ERRCODE_SUCC;
-
- result = uapi_i2c_master_init(HX3695_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
- if (result != ERRCODE_SUCC) {
- TYHX_ERROR("hx3695 i2c init fail! ret=0x%x", result);
- return ERRCODE_FAIL;
- }
-
- TYHX_WARNING("hx3695:i2c_id = %d i2c_speed = %d slave_addr = 0x%x \r\n",
- HX3695_I2C_BUS, 400000, HX3695_I2C_DEV_8ADDR);
-
- g_hx3695_installed = 1;
-
- return ERRCODE_SUCC;
-}
-
-uint32_t tyhx_write_reg(uint8_t reg_addr, uint8_t reg)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- uint16_t send_len;
- uint8_t *data_buf=®
- uint16_t data_len=1;
-
- hx3695_i2c_init();
- send_len = data_len + sizeof(uint8_t);
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- TYHX_ERROR("hx3695 send buff malloc fail!");
- return ERRCODE_FAIL;
- }
- write_data[0] = reg_addr;
- ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
- if (ret != EOK) {
- TYHX_ERROR("hx3695 send_buf content copy fail! ret=0x%x", ret);
- return ret;
- }
-
- data.send_buf = write_data;
- data.send_len = send_len;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < HX3695_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(HX3695_I2C_BUS, HX3695_I2C_DEV_8ADDR, &data);
- if (ret == ERRCODE_SUCC) {
- break;
- }
- }
- if (ret != ERRCODE_SUCC) {
- TYHX_ERROR("hx3695 data write fail! ret=0x%x", ret);
- return ret;
- }
-
- osal_kfree(write_data);
- return ERRCODE_SUCC;
-}
-
-uint32_t tyhx_read_regs(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
-
- hx3695_i2c_init();
- memset_s(data_buf, data_len, 0, data_len);
- data.send_buf = ®_addr;
- data.send_len = 1;
- data.receive_buf = data_buf;
- data.receive_len = data_len;
-
- for (retry = 0; retry < HX3695_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(HX3695_I2C_BUS, HX3695_I2C_DEV_8ADDR, &data);
- if (ret == ERRCODE_SUCC) {
- break;
- }
- }
- if (ret != ERRCODE_SUCC) {
- TYHX_ERROR("hx3695 data read fail! ret=0x%x", ret);
- return ret;
- }
-
- return ERRCODE_SUCC;
-}
-
-
// us 延时函数, 客户需填写
void tyhx_delay_us(uint32_t us)
{
return 1;
}
-uint32_t tyhx_suspend(void)
-{
- i2c_save_reg(HX3695_I2C_BUS);
- return 0;
-}
-uint32_t tyhx_resume(void)
-{
- i2c_recovery_reg(HX3695_I2C_BUS);
- return 0;
-}
-
// S_AGPIO_L26 心率复位 PPG reset
#define GPIO_PIN_PRG_RESET S_AGPIO_L26
// S_AGPIO_R0 PRG_LED_POWER ON 心率等电源控制脚
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-26 20:29:58
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-22 09:28:45
+ * @LastEditTime: 2024-04-30 09:31:34
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h
* @Description:
*
bool tyhx_timer_start(uint32_t ms);
bool tyhx_timer_stop(uint32_t ms);
-uint32_t tyhx_suspend(void);
-uint32_t tyhx_resume(void);
-
-
uint32_t tyhx_poweron(void);
uint32_t tyhx_poweroff(void);
ppg_service_running_stat = false;
}
-#include "tyhx_hrs_custom.h"
-
uint32_t ppg_suspend(void)
{
- return tyhx_suspend();
+ return custom_i2c_suspend();
}
uint32_t ppg_resume(void)
{
- return tyhx_resume();
+ return custom_i2c_resume();
}
void touch_screen_restart(void)
{
uapi_i2c_deinit(TOUCH_I2C_BUS);
- uapi_i2c_master_init(TOUCH_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
+ uapi_i2c_master_init(TOUCH_I2C_BUS, 100000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
#if defined(TPTYPE_TMA525B)
tma525b_resume();
#elif defined(TPTYPE_ZTW523)
// #include "config/include/ConfigModelC.h"
#include "soundandvibration/include/SoundAndVibrationVolumeSettingC.h"
#include "networkandcall/include/NetworkAndCallC.h"
+#include <dirent.h>
+#include <unistd.h>
+
+
#define SUPPORT_NV
#include "mag_service.h"
void mmc5603_getid(unsigned char *id)
{
- MMC5603_GETID(id);
+ //MMC5603_GETID(id);
+ MMC5603_CheckID();
}
void mmc5603_getdata(float *fAzimuth,float *fPitch,float *fRoll)
get_gsonsen_xyz(t);
}
-
-// 判断是否为闰年
-int isLeapYear(int year) {
- return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
-}
-
-// 计算某年某月的天数
-int daysInMonth(int year, int month) {
- const int days[12] = {31, 28 + isLeapYear(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- return days[month - 1];
-}
-
-// 计算时间距离1970年1月1日00:00:00的秒数
-uint32_t secondsSinceEpoch(int year,int month,int day,int hour,int min,int sec) {
- const int secondsPerMinute = 60;
- const int secondsPerHour = 3600;
- const int secondsPerDay = 86400;
- const int secondsPerYear = 31536000; // 不考虑闰秒
-
- long long seconds = 0;
-
- // 计算年份之间的秒数
- for (int i = 1970; i < year; ++i) {
- seconds += isLeapYear(i) ? secondsPerYear + secondsPerDay : secondsPerYear;
- }
-
- // 计算月份之间的秒数
- for (int i = 1; i < month; ++i) {
- seconds += daysInMonth(year, i) * secondsPerDay;
- }
-
- // 计算当月的秒数
- seconds += (day - 1) * secondsPerDay;
- seconds += hour * secondsPerHour;
- seconds += min * secondsPerMinute;
- seconds += sec;
-
- return seconds;
-}
-
-void get_rtc(uint32_t *seconds)
-{
-
- time_t rawtime;
- struct tm* timeinfo;
- time(&rawtime);
- timeinfo = localtime(&rawtime);
- *seconds = secondsSinceEpoch(timeinfo->tm_year + 1900,
- timeinfo->tm_mon + 1,
- timeinfo->tm_mday,
- timeinfo->tm_hour,
- timeinfo->tm_min,
- timeinfo->tm_sec);
- PRINT("msc : %d \r\n",*seconds);
-}
-
-//#include "lis2doc_reg.h"
-
-#include "stdio.h"
-
-/**** 静态全局变量 ****/
-static int width = 200; //LCD X 分辨率
-static int height = 200; //LCD Y 分辨率
-static uint32_t *bmp_buf = NULL; //bmp_buf
-static unsigned long line_length; //LCD 一行的长度(字节为单位)
-
-/**** BMP 文件头数据结构 ****/
-typedef struct {
- unsigned char type[2]; //文件类型
- unsigned int size; //文件大小
- unsigned short reserved1; //保留字段 1
- unsigned short reserved2; //保留字段 2
- unsigned int offset; //到位图数据的偏移量
-} __attribute__ ((packed)) bmp_file_header;
-
-/**** 位图信息头数据结构 ****/
-typedef struct {
- unsigned int size; //位图信息头大小
- int width; //图像宽度
- int height; //图像高度
- unsigned short planes; //位面数
- unsigned short bpp; //像素深度
- unsigned int compression; //压缩方式
- unsigned int image_size; //图像大小
- int x_pels_per_meter; //像素/米
- int y_pels_per_meter; //像素/米
- unsigned int clr_used;
- unsigned int clr_omportant;
-} __attribute__ ((packed)) bmp_info_header;
-
-int set_bmp(void)
-{
- unsigned short *line_buf = NULL; //行缓冲区
- unsigned long line_bytes; //BMP 图像一行的字节的大小
- unsigned int min_h, min_bytes;
-
- const char *path = {"/system/1.bmp"};
- bmp_file_header file_h;
- bmp_info_header info_h;
-
- int j;
-
- /* 打开BMP 文件 */
- FILE *fp = fopen(path, "r");
- if (fp == NULL) {
- fclose(fp);
- PRINT("file open failed !!!\r\n");
- return -1;
- }
- PRINT("file open succ !!!\r\n");
- /* 读取 BMP 文件头 */
- if (sizeof(bmp_file_header) != fread(&file_h, 1, sizeof(bmp_file_header),fp) )
- {
- PRINT(" read bmp_file_header failed !!!\r\n");
- fclose(fp);
- return -1;
- }
- PRINT("file read succ !!!\r\n");
- if (0 != memcmp(file_h.type, "BM", 2))
- {
- PRINT("it's not a BMP file !!!\r\n");
- fclose(fp);
- return -1;
- }
-
- /* 读取位图信息头 */
- if (sizeof(bmp_info_header) != fread(&info_h, 1,sizeof(bmp_info_header),fp) )
- {
- PRINT("read bmp_info_header error !!!\r\n");
- fclose(fp);
- return -1;
- }
- /* 打印信息 */
- PRINT("文件大小: %d\n"
- "位图数据的偏移量: %d\n"
- "位图信息头大小: %d\n"
- "图像分辨率: %d*%d\n"
- "像素深度: %d\n", file_h.size, file_h.offset,
- info_h.size, info_h.width, info_h.height,
- info_h.bpp);
-
- /* 将文件读写位置移动到图像数据开始处 */
- if (-1 == fseek(fp, file_h.offset, SEEK_SET))
- {
- PRINT("file lseek error !!!\r\n");
- fclose(fp);
- return -1;
- }
- PRINT("file lseek succ !!!\r\n");
-
- /* 申请一个 buf、暂存 bmp 图像的一行数据 */
- line_bytes = info_h.width * info_h.bpp / 8;
- line_buf = malloc(line_bytes);
- bmp_buf = malloc(file_h.size);
- if (NULL == line_buf)
- {
- fclose(fp);
- return -1;
- }
- else
- PRINT("malloc succ !!!\r\n");
-
-
- if (line_length > line_bytes)
- min_bytes = line_bytes;
- else
- min_bytes = line_length;
-
- if (0 < info_h.height)
- {//倒向位图
- if (info_h.height > height)
- {
- min_h = height;
- fseek(fp, (info_h.height - height) * line_bytes, SEEK_CUR);
- bmp_buf += width * (height - 1); //定位到屏幕左下角位置
- }
- else
- {
- min_h = info_h.height;
- bmp_buf += width * (info_h.height - 1);
- }
- for (j = min_h; j > 0; bmp_buf -= width, j--)
- {
- fread( line_buf, 1, line_bytes ,fp); //读取出图像数据
- memcpy(bmp_buf, line_buf, min_bytes);//
- }
- }
- else
- { //正向位图
- int temp = 0 - info_h.height; //负数转成正数
- if (temp > height)
- min_h = height;
- else
- min_h = temp;
- for (j = 0; j < min_h; j++, bmp_buf += width)
- {
- fread(line_buf, 1 ,line_bytes , fp);
- memcpy(bmp_buf, line_buf, min_bytes);
- }
- }
-
- int size = strlen(bmp_buf);
- PRINT("bmp_buf size : %d\r\n",size);
-
- /* 关闭文件、函数返回 */
- fclose(fp);
- free(line_buf);
- return 1;
-}
-
-#include <dirent.h>
-#include <unistd.h>
-
int removeFilesInFolder(const char *folderPath)
{
DIR *dir;
}
}
-int enter_recovery(void)
-{
- // if(set_bmp() == -1)
- // {
- // PRINT("set bmp failed !!! \r\n");
- // return -1;
- // }
- return 1;
- //upg_reboot();
-}
-
#include "driver/calendar.h"
uint32_t uapi_calendar_store_date(void)
return ret;
}
+#include "tyhx_hrs_custom.h"
+
+void get_ppg_id(void)
+{
+ tyhx_poweron();
+ hx3695_chip_check();
+ tyhx_poweroff();
+}
+
+#include "hal_i2c.h"
+#include "i2c.h"
+#define CUSTOM_I2C_TIME_MAX 3
+
+static uint8_t i2c_installed = 0;
+static uint8_t i2c_mutex_installed = 0;
+static osal_mutex i2c_mutex;
+
+void custom_i2c_reset(void)
+{
+ errcode_t result;
+ if(i2c_mutex_installed == 0)
+ {
+ osal_mutex_init(&i2c_mutex);
+ i2c_mutex_installed = 1;
+ }
+
+ result = osal_mutex_lock(&i2c_mutex);
+ if (result != ERRCODE_SUCC)
+ {
+ PRINT(" i2c lock fail! ret=0x%x\n", result);
+ return ;
+ }
+
+ if(i2c_installed == 1)
+ {
+ result = uapi_i2c_deinit(I2C_BUS_2);
+ if (result != ERRCODE_SUCC)
+ {
+ PRINT(" i2c deinit fail! ret=0x%x\n", result);
+ return ;
+ }
+ i2c_installed = 0;
+ }
+
+ LOS_Mdelay(5);
+
+ if(i2c_installed == 0)
+ {
+ result = uapi_i2c_master_init(I2C_BUS_2, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
+ if (result != ERRCODE_SUCC) {
+ PRINT(" i2c init fail! ret=0x%x\n", result);
+ return ;
+ }
+ i2c_installed = 1;
+ }
+
+ LOS_Mdelay(5);
+
+ osal_mutex_unlock(&i2c_mutex);
+}
+
+errcode_t custom_iic_init(void)
+{
+ errcode_t result;
+ if(i2c_installed == 0)
+ {
+ result = uapi_i2c_master_init(I2C_BUS_2, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
+
+ if (result != ERRCODE_SUCC) {
+ PRINT("cywee i2c init fail! ret=0x%x\n", result);
+ return ERRCODE_FAIL;
+ }
+
+ i2c_installed = 1;
+ return ERRCODE_SUCC;
+ }
+ else
+ return ERRCODE_FAIL;
+}
+
+errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex)
+{
+ errcode_t ret;
+ uint32_t retry;
+ i2c_data_t data;
+ uint8_t *write_data = NULL;
+ // custom_iic_init();
+
+ write_data = (uint8_t *)osal_kmalloc(regLength, OSAL_GFP_KERNEL);
+ if (write_data == NULL) {
+ PRINT("send buff malloc fail! %d\n",regLength);
+ goto error;
+ }
+
+ if( regLength == 2)
+ {
+ write_data[0] = ((uint8_t*)®)[0];
+ write_data[1] = ((uint8_t*)®)[1];
+ }else{
+ write_data[0] = (uint8_t)reg;
+ }
+
+
+ data.send_buf = write_data;
+ data.send_len = regLength;
+ data.receive_buf = readData;
+ data.receive_len = readDataSize;
+
+ for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
+ ret = uapi_i2c_master_writeread(busIndex, slaveAddr, &data);
+ if (ret == ERRCODE_SUCC) {
+ break;
+ }
+ }
+ if (ret != ERRCODE_SUCC) {
+ PRINT("i2cRead data read fail! busIndex %d, slaveAddr 0x%x, regaddr 0x%X,reglength %d, ret=0x%x\n",busIndex, slaveAddr,reg,regLength, ret);
+ }
+ osal_kfree(write_data);
+error:
+ return (ret>0) ? ret*-1: ret;
+}
+
+errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
+{
+ errcode_t ret;
+ uint32_t retry;
+ i2c_data_t data;
+ uint8_t *write_data = NULL;
+ uint16_t send_len;
+ uint8_t *data_buf=writeData;
+ uint16_t data_len=writeDataSize;
+
+ //custom_iic_init();
+ send_len = data_len + regLength;
+ write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
+ if (write_data == NULL) {
+ PRINT("i2cWrite send buff malloc fail %d!\n",send_len);
+ goto error;
+ }
+
+ if( regLength == 2)
+ {
+ write_data[0] = ((uint8_t*)®)[0];
+ write_data[1] = ((uint8_t*)®)[1];
+ }else{
+ write_data[0] = (uint8_t)reg;
+ }
+ ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
+ if (ret != EOK) {
+ PRINT("send_buf content copy fail! ret=0x%x\n", ret);
+ goto free_mem;
+ }
+
+ data.send_buf = write_data;
+ data.send_len = send_len;
+ data.receive_buf = NULL;
+ data.receive_len = 0;
+
+ for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
+ ret = uapi_i2c_master_write(busIndex, slaveAddr, &data);
+ if (ret == ERRCODE_SUCC) {
+ break;
+ }
+ }
+ if (ret != ERRCODE_SUCC) {
+ PRINT("i2cWrite cywee data write fail! ret=0x%x\n", ret);
+ }
+free_mem:
+ osal_kfree(write_data);
+error:
+ return (ret>0) ? ret*-1: ret;
+}
+
+errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
+{
+ errcode_t ret;
+ uint32_t retry;
+ i2c_data_t data;
+ uint8_t *write_data = NULL;
+ int16_t write_len = 0;
+
+ //custom_iic_init();
+ write_len = regLength + writeDataSize;
+ write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
+ if (write_data == NULL) {
+ PRINT(" send buff malloc fail!");
+ goto error;
+ }
+
+ if( regLength == 2)
+ {
+ write_data[0] = ((uint8_t*)®)[0];
+ write_data[1] = ((uint8_t*)®)[1];
+ }else{
+ write_data[0] = (uint8_t)reg;
+ }
+
+ ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
+ if (ret != EOK) {
+ PRINT("send_buf content copy fail! ret=0x%x\n", ret);
+ goto free_mem;
+ }
+ data.send_buf = write_data;
+ data.send_len = write_len;
+ data.receive_buf = readData;
+ data.receive_len = readDataSize;
+
+ for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
+ ret = uapi_i2c_master_writeread(busIndex, slaveAddr, &data);
+ if (ret == ERRCODE_SUCC) {
+ break;
+ }
+ }
+ if (ret != ERRCODE_SUCC) {
+ PRINT("data read fail! ret=0x%x\n", ret);
+ }
+
+free_mem:
+ osal_kfree(write_data);
+error:
+ return (ret>0) ? ret*-1: ret;
+}
+
+uint32_t custom_i2c_suspend(void)
+{
+ i2c_save_reg(I2C_BUS_2);
+ return 0;
+}
+uint32_t custom_i2c_resume(void)
+{
+ i2c_recovery_reg(I2C_BUS_2);
+ return 0;
+}
void flash_getid(uint32_t *id);
void flash_erase(void);
-void get_rtc(uint32_t *seconds);
-
//进入recovery
int enter_recovery(void);
//设置bmp图片
void do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen);
void uapi_delete_files(void);
+void custom_i2c_reset(void);
+errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex);
+errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex);
+errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex);
+
+uint32_t custom_i2c_suspend(void);
+uint32_t custom_i2c_resume(void);
#ifdef __cplusplus
}
return ERRCODE_SUCC;
}
-static uint32_t custom_enter_recovery(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
-{
-
- UNUSED(strCommonCmd);
-
- if(enter_recovery() == -1)
- return ERRCODE_FAIL;
-
- return ERRCODE_SUCC;
-}
-
#include "cywee_hal.h"
#include "hx3695_hrs_agc.h"
static uint32_t custom_gsensor_getdata(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
return ERRCODE_SUCC;
}
+static uint32_t custom_get_ppg_id(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+
+ UNUSED(strCommonCmd);
+
+ get_ppg_id();
+
+ return ERRCODE_SUCC;
+}
+
+static uint32_t custom_get_mmc_id(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+
+ UNUSED(strCommonCmd);
+
+ unsigned char id;
+ mmc5603_getid(&id);
+
+ return ERRCODE_SUCC;
+}
+
static const at_cmd_table_t g_custom_utils_cmd[] = {
{ (char *)"AT^CUSTOM_SN", custom_utils_setsn, (char *)"123456789ABCDEF2345678" },
{ (char *)"AT^CUSTOM_SN_REQ", custom_utils_getsn, (char *)" " },
{ (char *)"AT^FLASHERASE", custom_flash_erase, (char *)" " },
- { (char *)"AT^RECOVERY", custom_enter_recovery, (char *)" " },
-
{ (char *)"AT^GSENSOR", custom_gsensor_getdata, (char *)" " },
{ (char *)"AT^GETTP", custom_get_tpinfo, (char *)" " },
{ (char *)"AT^BLESERVICE", custom_bleservice_test, (char *)" " },
{ (char *)"AT^DSPPWR", custom_dsp_power_test, (char *)" " },
+ { (char *)"AT^GETPPGID", custom_get_ppg_id, (char *)" " },
+
+ { (char *)"AT^GETMMCID", custom_get_mmc_id, (char *)" " },
+
};
at_cmd_table_t *get_custom_utils_cmd_table(uint32_t *cmd_count)