微聊UI优化
authorp15692025051 <846603105@qq.com>
Sat, 19 Aug 2023 10:23:28 +0000 (18:23 +0800)
committerp15692025051 <846603105@qq.com>
Sat, 19 Aug 2023 10:23:28 +0000 (18:23 +0800)
2.sdk/Helios_SDK/components/SC7A20/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modGsensor_SC7A20.c
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py

index 5f15c09..fc3ff82 100644 (file)
@@ -9,15 +9,15 @@ Copyright (c) 2017 Silan MEMS. All Rights Reserved.
 //0x00: for debug
 //0x01: release version
 
-/***ʹÓÃÇý¶¯Ç°Çë¸ù¾Ýʵ¼Ê½ÓÏßÇé¿öÅäÖÃ******/
-/**SC7A20µÄSDO ½Å½ÓµØ£º  0****************/
-/**SC7A20µÄSDO ½Å½ÓµçÔ´£º1****************/
+/***使用驱动前请根据实际接线情况配置******/
+/**SC7A20的SDO 脚接地:  0****************/
+/**SC7A20的SDO 脚接电源:1****************/
 #define SL_SC7A20_SDO_VDD_GND            1
 /*****************************************/
 
-/***ʹÓÃÇý¶¯Ç°Çë¸ù¾Ýʵ¼ÊIICÇé¿ö½øÐÐÅäÖÃ***/
-/**SC7A20µÄIIC ½Ó¿ÚµØÖ·ÀàÐÍ 7bits£º  0****/
-/**SC7A20µÄIIC ½Ó¿ÚµØÖ·ÀàÐÍ 8bits£º  1****/
+/***使用驱动前请根据实际IIC情况进行配置***/
+/**SC7A20的IIC 接口地址类型 7bits:  0****/
+/**SC7A20的IIC 接口地址类型 8bits:  1****/
 #define SL_SC7A20_IIC_7BITS_8BITS        1
 /*****************************************/
 
@@ -46,135 +46,135 @@ Copyright (c) 2017 Silan MEMS. All Rights Reserved.
 
 // typedef enum {FALSE = 0,TRUE = !FALSE} bool;
 // ;
-/********¿Í»§ÐèÒª½øÐеÄIIC½Ó¿Ú·â°üº¯Êý****************/
+/********客户需要进行的IIC接口封包函数****************/
 extern unsigned char SL_SC7A20_I2c_Spi_Write(bool sl_spi_iic,unsigned char reg, unsigned char dat);
 extern unsigned char SL_SC7A20_I2c_Spi_Read(bool sl_spi_iic,unsigned char reg, unsigned char len, unsigned char *buf);
-/**SL_SC7A20_I2c_Spi_Write º¯ÊýÖУ¬ sl_spi_iic:0=spi  1=i2c  Reg£º¼Ä´æÆ÷µØÖ·   dat£º¼Ä´æÆ÷µÄÅäÖÃÖµ*******************/
-/**SL_SC7A20_I2c_Spi_Write º¯Êý ÊÇÒ»¸öµ¥´ÎдµÄº¯Êý*******************************************************************/
-/***SL_SC7A20_I2c_Spi_Read º¯ÊýÖУ¬ sl_spi_iic:0=spi  1=i2c Reg Í¬ÉÏ£¬len:¶ÁÈ¡Êý¾Ý³¤¶È£¬buf:´æ´¢Êý¾ÝÊ×µØÖ·£¨Ö¸Õ룩***/
-/***SL_SC7A20_I2c_Spi_Read º¯Êý ÊÇ¿ÉÒÔ½øÐе¥´Î¶Á»ò¶à´ÎÁ¬Ðø¶ÁÈ¡µÄº¯Êý*************************************************/
+/**SL_SC7A20_I2c_Spi_Write 函数中, sl_spi_iic:0=spi  1=i2c  Reg:寄存器地址   dat:寄存器的配置值*******************/
+/**SL_SC7A20_I2c_Spi_Write 函数 是一个单次写的函数*******************************************************************/
+/***SL_SC7A20_I2c_Spi_Read 函数中, sl_spi_iic:0=spi  1=i2c Reg 同上,len:读取数据长度,buf:存储数据首地址(指针)***/
+/***SL_SC7A20_I2c_Spi_Read 函数 是可以进行单次读或多次连续读取的函数*************************************************/
 
-/*************Çý¶¯³õʼ»¯º¯Êý**************/
+/*************驱动初始化函数**************/
 signed char SL_SC7A20_Driver_Init(bool Sl_spi_iic_init,unsigned char Sl_pull_up_mode);
-/***ÊäÈë²ÎÊý:1,Sl_spi_iic_init:0-1***2,PULL_UP_MODE:0x00 0x08 0x04 0x0c********/
-/****Sl_spi_iic_init=0£ºSPI MODE, Sl_pull_up_mode config failed****************/
-/****Sl_spi_iic_init=1£ºIIC MODE***********************************************/
+/***输入参数:1,Sl_spi_iic_init:0-1***2,PULL_UP_MODE:0x00 0x08 0x04 0x0c********/
+/****Sl_spi_iic_init=0:SPI MODE, Sl_pull_up_mode config failed****************/
+/****Sl_spi_iic_init=1:IIC MODE***********************************************/
 /****Sl_pull_up_mode=0x00: SDO  I2C  pull up***********************************/
 /****Sl_pull_up_mode=0x08: I2C  pull up and  SDO  open drain*******************/
 /****Sl_pull_up_mode=0x04: SDO  pull up and  I2C  open drain*******************/
 /****Sl_pull_up_mode=0x0C: SDO  I2C  open drain********************************/
-/****SDO½Å½ÓµØ£¬ÍƼö¹Ø±ÕSDOÄÚ²¿ÉÏÀ­µç×è****************************************/
-/****SPIͨѶ£¬ÍƼö¹Ø±ÕSDA£¬SCLÄÚ²¿ÉÏÀ­µç×裬SDOÄÚ²¿ÉÏÀ­µç×è»á×Ô¶¯¹Ø±Õ**********/
-
-/*************·µ»ØÊý¾ÝÇé¿öÈçÏÂ*****************/
-/**return : 0x11/0x26 ±íʾCHIP ID Õý³£*********/
-/**return : 0         ±íʾ¶ÁÈ¡Òì³£*************/
-/**return :-1;        SPI Í¨ÐÅÎÊÌâ*************/
-/**return :-2;        IIC Í¨ÐÅÎÊÌâ*************/
-/**return :-3;        Á¬Ðø¶ÁÈ¡ Í¨ÐÅÎÊÌâ********/
-
-/***************Ö´ÐÐË㷨ǰÐèÒª¶ÁÈ¡FIFOÊý¾Ý*****/
-/***************FIFOÊý¾Ý¶ÁÈ¡ºó£¬FIFO»áÇå¿Õ*****/
-/***************ËùÒÔFIFOÖ»Äܶ¨Ê±¶Áȡһ´Î*******/
+/****SDO脚接地,推荐关闭SDO内部上拉电阻****************************************/
+/****SPI通讯,推荐关闭SDA,SCL内部上拉电阻,SDO内部上拉电阻会自动关闭**********/
+
+/*************返回数据情况如下*****************/
+/**return : 0x11/0x26 表示CHIP ID 正常*********/
+/**return : 0         表示读取异常*************/
+/**return :-1;        SPI 通信问题*************/
+/**return :-2;        IIC 通信问题*************/
+/**return :-3;        连续读取 通信问题********/
+
+/***************执行算法前需要读取FIFO数据*****/
+/***************FIFO数据读取后,FIFO会清空*****/
+/***************所以FIFO只能定时读取一次*******/
 unsigned char SL_SC7A20_Read_FIFO(void);
-/**return : FIFO_LEN    ±íʾÊý×鳤¶È***********/
+/**return : FIFO_LEN    表示数组长度***********/
 
 
-/****˵Ã÷:¸Ãº¯ÊýÐèÒª¶¨Ê±Ö´ÐÐ,´Ó¶ø±£Ö¤Ëã·¨Ö´Ðе½Î»**/
-/***************Ö´ÐÐËã·¨»ñÈ¡¼Æ²½½á¹û***************/
+/****说明:该函数需要定时执行,从而保证算法执行到位**/
+/***************执行算法获取计步结果***************/
 unsigned int SL_Watch_Kcal_Pedo_Algo(bool sl_music_motor_en);
-/***sl_music_motor_en=0: Âí´ïµç»úºÍÒôÀÖ¹¦ÄÜδ´ò¿ª**/
-/***sl_music_motor_en=1: Âí´ïµç»úºÍÒôÀÖ¹¦ÄÜÒÑ´ò¿ª**/
-/**************»ñÈ¡µ±ÌìµÄµ±Ç°¼Æ²½Öµ****************/
-/*************Êä³öÊý¾ÝΪ£º¼Æ²½Öµ(²½)***************/
+/***sl_music_motor_en=0: 马达电机和音乐功能未打开**/
+/***sl_music_motor_en=1: 马达电机和音乐功能已打开**/
+/**************获取当天的当前计步值****************/
+/*************输出数据为:计步值(步)***************/
 
-/***************»ñÈ¡ÈýÖáԭʼÊý¾Ý***************/
+/***************获取三轴原始数据***************/
 unsigned char SL_SC7A20_GET_FIFO_Buf(signed short *sl_x_buf,signed short *sl_y_buf,signed short *sl_z_buf,bool filter_en);
-/****************Ö´ÐÐËã·¨ºóÖ´ÐиÃÃüÁî**********/
-/**x_buf  y_buf  z_buf : ³¤¶È32µÄÊý×éÊ×µØÖ·****/
-/**filter_en£º0 µÍͨÂ˲¨½ûÖ¹ 1£ºµÍͨÂ˲¨Ê¹ÄÜ***/
-/****************·µ»ØÊý¾ÝÇé¿öÈçÏÂ**************/
-/**return : FIFO_LEN    ±íʾÊý×鳤¶È***********/
+/****************执行算法后执行该命令**********/
+/**x_buf  y_buf  z_buf : 长度32的数组首地址****/
+/**filter_en:0 低通滤波禁止 1:低通滤波使能***/
+/****************返回数据情况如下**************/
+/**return : FIFO_LEN    表示数组长度***********/
 
 
-/******************¸´Î»¼Æ²½Öµ************************/
+/******************复位计步值************************/
 void SL_Pedo_Kcal_ResetStepCount(void);
-/**********ÊäÈëÊý¾ÝΪ£ºÎÞ******Êä³öÊý¾ÝΪ£ºÎÞ********/
-/*ʹÓ÷½·¨: ÏµÍ³Ê±¼äµ½µÚ¶þÌìʱ£¬µ÷Óøú¯ÊýÇå³ý¼Æ²½Öµ*/
+/**********输入数据为:无******输出数据为:无********/
+/*使用方法: 系统时间到第二天时,调用该函数清除计步值*/
 
-/*******************¼Æ²½×´Ì¬¸´Î»**********************/
+/*******************计步状态复位**********************/
 void SL_Pedo_WorkMode_Reset(void);
-/******************ÊäÈë²ÎÊý£ºÎÞ***********************/
-/******************Êä³öÖµ²ÎÊý£ºÎÞ*********************/
+/******************输入参数:无***********************/
+/******************输出值参数:无*********************/
 
-/******************Éý¼¶ºó£¬ÉèÖüƲ½Öµ,¾àÀë,ÈÈÁ¿************************/
-/******************Éý¼¶ºó£¬ÇëÔÚ³õʼ»¯º¯Êýºó£¬Ôö¼Ó¸Ãº¯Êý****************/
+/******************升级后,设置计步值,距离,热量************************/
+/******************升级后,请在初始化函数后,增加该函数****************/
 void SL_Pedo_StepCount_Set(unsigned int sl_pedo_value,unsigned int sl_dis_value,unsigned int sl_kcal_value);
-/**********ÊäÈëÊý¾ÝΪ£ºsl_pedo_value  ¼Æ²½Öµ*****/
-/**********ÊäÈëÊý¾ÝΪ£ºsl_dis_value   ¾àÀëÖµ*****/
-/**********ÊäÈëÊý¾ÝΪ£ºsl_kcal_value  ÈÈÁ¿Öµ*****/
+/**********输入数据为:sl_pedo_value  计步值*****/
+/**********输入数据为:sl_dis_value   距离值*****/
+/**********输入数据为:sl_kcal_value  热量值*****/
 
-/******************¼Æ²½ÁéÃô¶ÈÉèÖÃ********************/
+/******************计步灵敏度设置********************/
 void SL_PEDO_TH_SET(unsigned char sl_pedo_amp,unsigned char sl_pedo_th,unsigned char sl_pedo_weak,unsigned char sl_zcr_lel,unsigned char sl_scope_lel);
 /******sl_pedo_amp>4&&sl_pedo_amp<201**************************/
-/******sl_pedo_amp:ԽСÁéÃô¶ÈÔ½¸ß£¬Ô½ÈÝÒ׼Ʋ½******************/
-/******sl_pedo_amp:Ô½´óÁéÃô¶ÈÔ½¸ß£¬Ô½ÄѼƲ½********************/
-/******sl_pedo_amp:ĬÈÏÖµ26£¬²»ÉèÖþÍÊÇ26**********************/
+/******sl_pedo_amp:越小灵敏度越高,越容易计步******************/
+/******sl_pedo_amp:越大灵敏度越高,越难计步********************/
+/******sl_pedo_amp:默认值26,不设置就是26**********************/
 
 /******sl_pedo_th>5&&sl_pedo_th<50*****************************/
-/******sl_pedo_th:ԽСÁéÃô¶ÈÔ½¸ß£¬Ô½ÈÝÒ׼Ʋ½*******************/
-/******sl_pedo_th:Ô½´óÁéÃô¶ÈÔ½¸ß£¬Ô½ÄѼƲ½*********************/
-/******sl_pedo_th:ĬÈÏÖµ10£¬²»ÉèÖþÍÊÇ10***********************/
+/******sl_pedo_th:越小灵敏度越高,越容易计步*******************/
+/******sl_pedo_th:越大灵敏度越高,越难计步*********************/
+/******sl_pedo_th:默认值10,不设置就是10***********************/
 
 /******sl_pedo_weak>=0&&sl_pedo_weak<6*************************/
-/******sl_pedo_th:0,²»´ò¿ªÇá΢×ß·¼Æ²½¹¦ÄÜ*********************/
-/******sl_pedo_th:1,´ò¿ªÇá΢×ß·¼Æ²½¹¦ÄÜ***********************/
-/******sl_pedo_th:2,´ò¿ªÇá΢×ß·¼Æ²½¹¦ÄÜ***********************/
-/******sl_pedo_th:3,´ò¿ªÇá΢×ß·¼Æ²½¹¦ÄÜ***********************/
-/******sl_pedo_th:4,´ò¿ªÇá΢×ß·¼Æ²½¹¦ÄÜ***********************/
-/******sl_pedo_th:5,´ò¿ªÇá΢×ß·¼Æ²½¹¦ÄÜ***********************/
-/******sl_pedo_th:ĬÈÏÖµ0,ÉèÖõÄÖµÔ½´ó£¬¼ì²â¼Æ²½µÄÔ½ÁéÃô*******/
+/******sl_pedo_th:0,不打开轻微走路计步功能*********************/
+/******sl_pedo_th:1,打开轻微走路计步功能***********************/
+/******sl_pedo_th:2,打开轻微走路计步功能***********************/
+/******sl_pedo_th:3,打开轻微走路计步功能***********************/
+/******sl_pedo_th:4,打开轻微走路计步功能***********************/
+/******sl_pedo_th:5,打开轻微走路计步功能***********************/
+/******sl_pedo_th:默认值0,设置的值越大,检测计步的越灵敏*******/
 
 /*****sl_zcr_lel>=0&&sl_zcr_lel<=255***************************/
-/*****sl_zcr_lel:ĬÈÏÖµ=20,ÉèÖõÄֵԽС£¬Ô½ÈÝÒׯÁ±ÎÀ®°ÈÕð¶¯****/
-/*****Ò»¶¨Ê±¼äÄڵĹýÁãÂʼÆËã***********************************/
+/*****sl_zcr_lel:默认值=20,设置的值越小,越容易屏蔽喇叭震动****/
+/*****一定时间内的过零率计算***********************************/
 
 /*****sl_scope_lel>=0&&sl_scope_lel<=255***********************/
-/*****ÕûÌåÊý¾Ý·ù¶ÈãÐÖµ*****************************************/
+/*****整体数据幅度阈值*****************************************/
 
 
-/*******¼Æ²½Ö÷ÖáÉèÖÃ****************/
+/*******计步主轴设置****************/
 void SL_PEDO_SET_AXIS(unsigned char sl_xyz);
-/***sl_xyz:0  xÖá*******************/
-/***sl_xyz:1  yÖá*******************/
-/***sl_xyz:2  zÖá*******************/
-/***sl_xyz:3  Ëã·¨¾ö¶¨**************/
+/***sl_xyz:0  x轴*******************/
+/***sl_xyz:1  y轴*******************/
+/***sl_xyz:2  z轴*******************/
+/***sl_xyz:3  算法决定**************/
 
-/*ÉèÖÃÔ˶¯¼ì²â·ù¶ÈãÐÖµºÍʱ¼äãÐÖµ****/
+/*设置运动检测幅度阈值和时间阈值****/
 void SL_PEDO_INT_SET(unsigned char V_TH,unsigned char T_TH,bool INT_EN);
 /***V_TH:0  0-127************************************/
 /***T_TH:1  0-127************************************/
-/***INT_EN:0 ¹Ø±ÕÖжϹ¦ÄÜ£¬1£¬´ò¿ªÖжÏ״̬¼à²â¹¦ÄÜ***/
+/***INT_EN:0 关闭中断功能,1,打开中断状态监测功能***/
 /***USE AOI2 INT*************************************/
 
-/*ÉèÖÃÔ˶¯×´Ì¬¶ÁÈ¡******************/
+/*设置运动状态读取******************/
 bool SL_INT_STATUS_READ(void);
-/*0£º  Ã»ÓÐÔ˶¯*********************/
-/*1£º  ÓÐÔ˶¯***********************/
-/*¹Ø±ÕÖжϹ¦ÄÜÇé¿öÏ£¬Ò»Ö±Êä³ö1*****/
-
-/***********¹Ø±ÕIICÉ豸**************/
-/***********Power down º¯Êý**********/
-/********²»Ê¹ÓøÃÉ豸Çé¿öÏÂ**********/
-/****ÈçÐèÖØÆô£¬Ê¹ÓÃÇý¶¯³õʼ»¯º¯Êý****/
+/*0:  没有运动*********************/
+/*1:  有运动***********************/
+/*关闭中断功能情况下,一直输出1*****/
+
+/***********关闭IIC设备**************/
+/***********Power down 函数**********/
+/********不使用该设备情况下**********/
+/****如需重启,使用驱动初始化函数****/
 bool  SL_SC7A20_Power_Down(void);
-/*************ÊäÈë²ÎÊý:ÎÞ************/
-/**********·µ»Ø²ÎÊýÇé¿ö˵Ã÷**********/
+/*************输入参数:无************/
+/**********返回参数情况说明**********/
 /**return  1: Power Down Success*****/
 /**return  0: Power Down Fail********/
 
 
-/*********´«¸ÐÆ÷µÄ¹¤×÷ƵÂÊÉèÖÃ***********/
+/*********传感器的工作频率设置***********/
 void SC7A20_ODR_SET(bool sl_odr);//10 50/25
 /**sl_odr:0 10Hz(SC7A20E) 25Hz(SC7A20)***/
 /**sl_odr:1 25Hz(SC7A20E) 50Hz(SC7A20)***/
@@ -182,174 +182,174 @@ void SC7A20_ODR_SET(bool sl_odr);//10 50/25
 
 
 
-/*************³õʼ»¯¸öÈ˲ÎÊý*************/
-/**²ÎÊý³õʼ»¯£¬ÓÃÓÚÈÈÁ¿£¬¾àÀë¼ÆËã********/
+/*************初始化个人参数*************/
+/**参数初始化,用于热量,距离计算********/
 void SL_Pedo_Person_Inf_Init(unsigned char *Person_Inf_Init);
-/*********ÊäÈëÖ¸Õë²ÎÊý·Ö±ðÊÇ:Éí¸ß ÌåÖØ ÄêÁä ÐÔ±ð***¾ÙÀý:178,60,26 1*********/
-/**Éí¸ß·¶Î§:  30cm ~ 250cm  ***********/
-/**ÌåÖØ·¶Î§:  10Kg ~ 200Kg  ***********/
-/**ÄêÁ䷶Χ:  3Ëê  ~ 150Ëê  ***********/
-/**ÐÔ±ð·¶Î§:  0 ~ 1    0:Å® 1:ÄР  ****/
+/*********输入指针参数分别是:身高 体重 年龄 性别***举例:178,60,26 1*********/
+/**身高范围:  30cm ~ 250cm  ***********/
+/**体重范围:  10Kg ~ 200Kg  ***********/
+/**年龄范围:  3岁  ~ 150岁  ***********/
+/**性别范围:  0 ~ 1    0:女 1:男   ****/
 
-/*********************»ñÈ¡Ô˶¯×´Ì¬Öµ**********************/
+/*********************获取运动状态值**********************/
 unsigned char SL_Pedo_GetMotion_Status(void);
-/**********ÊäÈëÊý¾ÝΪ£ºÎÞ*********************************/
-/**********Êä³öÊý¾ÝΪ£º0 ~ 3 *****************************/
-/**Êä³öÊý¾ÝΪ£º0   *¾²Ö¹»ò¾²×ø**********/
-/**Êä³öÊý¾ÝΪ£º1   *Âý×ß»òÉ¢²½**********/
-/**Êä³öÊý¾ÝΪ£º2   *Õý³£×ß·************/
-/**Êä³öÊý¾ÝΪ£º3   *Åܲ½»ò¾çÁÒÔ˶¯******/
-
-/**************»ñÈ¡½ØÖ¹µ±Ç°µ±ÌìµÄÐÐ×ß¾àÀë*****************/
+/**********输入数据为:无*********************************/
+/**********输出数据为:0 ~ 3 *****************************/
+/**输出数据为:0   *静止或静坐**********/
+/**输出数据为:1   *慢走或散步**********/
+/**输出数据为:2   *正常走路************/
+/**输出数据为:3   *跑步或剧烈运动******/
+
+/**************获取截止当前当天的行走距离*****************/
 unsigned int SL_Pedo_Step_Get_Distance(void);
-/*******************ÊäÈëÊý¾ÝΪ£ºÎÞ************************/
-/*******************Êä³öÊý¾ÝΪ£ºµ±ÌìÐÐ×ß¾àÀë *************/
-/*******************µ¥Î»:       ·ÖÃ×(dm)******************/
+/*******************输入数据为:无************************/
+/*******************输出数据为:当天行走距离 *************/
+/*******************单位:       分米(dm)******************/
 
-/**************»ñÈ¡½ØÖ¹µ±Ç°µ±ÌìµÄÈÈÁ¿ÏûºÄ*****************/
+/**************获取截止当前当天的热量消耗*****************/
 unsigned int SL_Pedo_Step_Get_KCal(void);
-/*******************ÊäÈëÊý¾ÝΪ£ºÎÞ************************/
-/*******************Êä³öÊý¾ÝΪ£ºµ±ÌìÈÈÁ¿ÏûºÄÖµ ***********/
-/*********µ¥Î»: ´ó¿¨     1¸öµ¥Î»=0.1´ó¿¨******************/
+/*******************输入数据为:无************************/
+/*******************输出数据为:当天热量消耗值 ***********/
+/*********单位: 大卡     1个单位=0.1大卡******************/
 
-/**************»ñÈ¡×î½üÒ»¶Îʱ¼äµÄ×ß·ƽ¾ù·ù¶È*************/
+/**************获取最近一段时间的走路平均幅度*************/
 unsigned short SL_Pedo_Step_Get_Avg_Amp(void);
-/********************ÊäÈëÊý¾ÝΪ£ºÎÞ***********************/
-/***********************1LSB¡ÖXXXmg************************/
+/********************输入数据为:无***********************/
+/***********************1LSB≈XXXmg************************/
 
-/***********************»ñÈ¡µ±Ç°×ß·ƽ¾ù²½Æµ**************/
+/***********************获取当前走路平均步频**************/
 unsigned char SL_Pedo_Step_Get_Step_Per_Min(void);
-/********************ÊäÈëÊý¾ÝΪ£ºÎÞ***********************/
-/********************Êä³öÊý¾ÝΪ£ºXXX²½/·ÖÖÓ **************/
+/********************输入数据为:无***********************/
+/********************输出数据为:XXX步/分钟 **************/
 
-/***********************»ñÈ¡µ±Ç°µÄÔ˶¯µÈ¼¶****************/
+/***********************获取当前的运动等级****************/
 unsigned char SL_Pedo_Step_Get_Motion_Degree(void);
-/********************ÊäÈëÊý¾ÝΪ£ºÎÞ***********************/
-/********************Êä³öÊý¾ÝΪ£º0-25 ********************/
+/********************输入数据为:无***********************/
+/********************输出数据为:0-25 ********************/
 
 
-/**********̧ÊÖÁÁÆÁËã·¨**********/
+/**********抬手亮屏算法**********/
 
-/*****************̧ÊÖÁÁÆÁËã·¨³õʼ»¯º¯Êý****************/
+/*****************抬手亮屏算法初始化函数****************/
 void SL_Turn_Wrist_Init(unsigned char *SL_Turn_Wrist_Para);
-/************ÊäÈë²ÎÊý£º*************/
-/******SL_Turn_Wrist_Para[0]:¼ÓËٶȼÆÌùƬλÖÃÉèÖà 0--7********/
-/******SL_Turn_Wrist_Para[1]:̧ÊÖÁÁÆÁÁéÃô¶ÈÉèÖà   1--5********/
-/******SL_Turn_Wrist_Para[2]:ˮƽ̧ÊÖÁÁÆÁʹÄÜ¿ØÖÆÎ»0--1********/
+/************输入参数:*************/
+/******SL_Turn_Wrist_Para[0]:加速度计贴片位置设置  0--7********/
+/******SL_Turn_Wrist_Para[1]:抬手亮屏灵敏度设置    1--5********/
+/******SL_Turn_Wrist_Para[2]:水平抬手亮屏使能控制位0--1********/
 
-/*************ÈýÖá¼ÓËٶȼÆÌùƬλÖÃÉèÖÃ*************************/
-/***SL_Turn_Wrist_Para[0]£ºÉ趨ֵµÄ·¶Î§Îª: 0 ~ 7 **************/
-/***Çë²Î¿¼Îĵµ:Silan_MEMS_ÊÖ»·Ë㷨˵Ã÷Êé_V1.1.pdf**************/
+/*************三轴加速度计贴片位置设置*************************/
+/***SL_Turn_Wrist_Para[0]:设定值的范围为: 0 ~ 7 **************/
+/***请参考文档:Silan_MEMS_手环算法说明书_V1.1.pdf**************/
 
-/***SL_Turn_Wrist_Para[1]:É趨ֵµÄ·¶Î§Îª: 1 ~ 5 **/
-/*********ĬÈÏֵΪ£º3   ÖеÈÁéÃô¶È****************/
-/*********É趨ֵΪ£º1   ×îµÍÁéÃô¶È****************/
-/*********ĬÈÏֵΪ£º5   ×î¸ßÁéÃô¶È****************/
-/*********É趨ֵΪ£º1(×î³Ù¶Û)~5(×îÁéÃô)***********/
+/***SL_Turn_Wrist_Para[1]:设定值的范围为: 1 ~ 5 **/
+/*********默认值为:3   中等灵敏度****************/
+/*********设定值为:1   最低灵敏度****************/
+/*********默认值为:5   最高灵敏度****************/
+/*********设定值为:1(最迟钝)~5(最灵敏)***********/
 
-/******SL_Turn_Wrist_Para[2]:ˮƽ̧ÊÖÁÁÆÁʹÄÜ¿ØÖÆÎ»0--1*******/
-/******0£º½ûֹˮƽ̧ÊÖ¹¦ÄÜ********/
-/******1£ºÊ¹ÄÜˮƽ̧ÊÖ¹¦ÄÜ********/
+/******SL_Turn_Wrist_Para[2]:水平抬手亮屏使能控制位0--1*******/
+/******0:禁止水平抬手功能********/
+/******1:使能水平抬手功能********/
 
 
 
-/*****************̧ÊÖÁÁÆÁ״̬»ñÈ¡º¯Êý****************/
+/*****************抬手亮屏状态获取函数****************/
 signed char SL_Watch_Wrist_Algo(void);
-/***********ÊäÈë²ÎÊý£ºÎÞ***********/
-/***********·µ»Ø²ÎÊýÇé¿ö˵Ã÷*******/
-/**Return:  2     ±¸×¢ËµÃ÷:ÆÁÄ»µãÁÁºóÐèÒª¹Ø±Õ*********/
-/**Return:  1     ±¸×¢ËµÃ÷:ÆÁÄ»ÐèÒªµãÁÁ***************/
-/**Return:  0     ±¸×¢ËµÃ÷:ÆÁÄ»²»ÐèÒªµãÁÁ*************/
-/**Return: -1     ±¸×¢ËµÃ÷:δ³õʼ»¯»ò³õʼ»¯Ê§°Ü*******/
-
-/*****************̧ÊÖÁÁÆÁ״̬¸´Î»********************/
+/***********输入参数:无***********/
+/***********返回参数情况说明*******/
+/**Return:  2     备注说明:屏幕点亮后需要关闭*********/
+/**Return:  1     备注说明:屏幕需要点亮***************/
+/**Return:  0     备注说明:屏幕不需要点亮*************/
+/**Return: -1     备注说明:未初始化或初始化失败*******/
+
+/*****************抬手亮屏状态复位********************/
 //void SL_Turn_Wrist_WorkMode_Reset(void);
-/******************ÊäÈë²ÎÊý£ºÎÞ***********************/
-/******************Êä³öÖµ²ÎÊý£ºÎÞ*********************/
+/******************输入参数:无***********************/
+/******************输出值参数:无*********************/
 
 
 //3-12
 //1-10
 //0-10
-/******************˯Ãß²ÎÊýÉèÖÃ********************/
+/******************睡眠参数设置********************/
 void SL_Sleep_Para(unsigned char adom_time_th,unsigned char sleep_vpp_th,unsigned char sleep_time_th);
-/**************************Åå´÷¼ì²âµÄʱ³¤***********************/
+/**************************佩戴检测的时长***********************/
 /******adom_time_th:0-255 min***********************************/
-/******adom_time_th:δ»î¶¯µÄʱ¼ä£¬´óÓÚÉèÖÃãÐÖµ²ÅÄÜÈÏΪδÅå´÷****/
-/******adom_time_th:ÉèÖÃֵԽС£¬Ô½ÈÝÒ׳öÏÖδÅå´÷Çé¿ö************/
+/******adom_time_th:未活动的时间,大于设置阈值才能认为未佩戴****/
+/******adom_time_th:设置值越小,越容易出现未佩戴情况************/
 
-/**************************˯ÃßÖмäµããÐÖµ***********************/
-/******sleep_vpp_th:ԽСÁéÃô¶ÈÔ½¸ß£¬Ô½ÈÝÒ×˯Ãß״̬Çл»**********/
-/******sleep_vpp_th:Ô½´óÁéÃô¶ÈÔ½µÍ£¬Ô½ÄÑ˯Ãß״̬Çл»************/
-/******sleep_vpp_th:ĬÈÏÖµ10£¬²»ÉèÖþÍÊÇ10**********************/
+/**************************睡眠中间点阈值***********************/
+/******sleep_vpp_th:越小灵敏度越高,越容易睡眠状态切换**********/
+/******sleep_vpp_th:越大灵敏度越低,越难睡眠状态切换************/
+/******sleep_vpp_th:默认值10,不设置就是10**********************/
 
-/**************************״̬Çл»×îСʱ¼ä*********************/
-/******sleep_time_th:¸ÃֵԽС£¬Ë¯Ãß״̬Çл»µÄËùÐèʱ¼ä¾ÍÔ½¶Ì*****/
-/******sleep_time_th:¸ÃÖµÔ½´ó£¬Ë¯Ãß״̬Çл»µÄËùÐèʱ¼ä¾ÍÔ½³¤*****/
-/******sleep_time_th:ĬÈÏÖµ1£¬²»ÉèÖþÍÊÇ1***********************/
+/**************************状态切换最小时间*********************/
+/******sleep_time_th:该值越小,睡眠状态切换的所需时间就越短*****/
+/******sleep_time_th:该值越大,睡眠状态切换的所需时间就越长*****/
+/******sleep_time_th:默认值1,不设置就是1***********************/
 
 
-/***************»ñÈ¡µ±Ç°µÄ˯Ãß״̬*****************/
+/***************获取当前的睡眠状态*****************/
 unsigned char SL_Sleep_GetStatus(unsigned char SL_Sys_Time);
-/*******SL_Sys_Time£ºµ±Ç°µÄʱ¼ä£¬ÒÔСʱΪµ¥Î»******/
-/*******È«ÌìµÄÊäÈëʱ¼ä·¶Î§Îª£º0-23 ****************/
-/***************Êä³öÊý¾Ý·¶Î§£º0-7******************/
-/***************0£ºÇåÐÑ״̬************************/
-/***************7£ºÉî¶È˯Ãß************************/
+/*******SL_Sys_Time:当前的时间,以小时为单位******/
+/*******全天的输入时间范围为:0-23 ****************/
+/***************输出数据范围:0-7******************/
+/***************0:清醒状态************************/
+/***************7:深度睡眠************************/
 
-/***************»ñÈ¡µ±Ç°µÄ»î¶¯µÈ¼¶*****************/
+/***************获取当前的活动等级*****************/
 unsigned char SL_Sleep_Active_Degree(unsigned char mode);
-/***************mode£º0 ¶¨Ê±Æ÷0.5sÖе÷ÓÃ***********/
-/***************mode£º1 ¶¨Ê±Æ÷1minÖе÷ÓÃ***********/
-/***************Êä³öÊý¾Ý·¶Î§£º0-255****************/
-/***************0£º¾²Ö¹****************************/
-/*************255£ºÔ˶¯****************************/
+/***************mode:0 定时器0.5s中调用***********/
+/***************mode:1 定时器1min中调用***********/
+/***************输出数据范围:0-255****************/
+/***************0:静止****************************/
+/*************255:运动****************************/
 
 unsigned char SL_Sleep_Get_Active_Degree(void);
-/***************mode£º0 ¶¨Ê±Æ÷0.5sÖе÷ÓÃ***********/
-/***************mode£º1 ¶¨Ê±Æ÷1minÖе÷ÓÃ***********/
-/***************Êä³öÊý¾Ý·¶Î§£º0-255****************/
-/***************0£º¾²Ö¹****************************/
-/*************255£ºÔ˶¯****************************/
+/***************mode:0 定时器0.5s中调用***********/
+/***************mode:1 定时器1min中调用***********/
+/***************输出数据范围:0-255****************/
+/***************0:静止****************************/
+/*************255:运动****************************/
 
-/***************»ñÈ¡µ±Ç°µÄÅå´÷µÄÇé¿ö***************/
+/***************获取当前的佩戴的情况***************/
 unsigned char SL_Adom_GetStatus(void);
-/***************0£ºÎ´Åå´÷**************************/
-/***************1£ºÒÑÅå´÷**************************/
+/***************0:未佩戴**************************/
+/***************1:已佩戴**************************/
 
-/***************»ñÈ¡µ±Ç°µÄÅå´÷µÄÇé¿ö***************/
+/***************获取当前的佩戴的情况***************/
 unsigned char SL_In_Sleep_Status(void);
-/***************0£ºout sleep**********************/
-/***************1£ºin sleep***********************/
+/***************0:out sleep**********************/
+/***************1:in sleep***********************/
 
-/**************************·­×ª¹¦ÄÜ************************/
+/**************************翻转功能************************/
 bool SL_Get_Clock_Status(bool open_close);
-/***********ÊäÈë²ÎÊý£ºsensor_pos***********/
-/****sensor_pos:1 open  ¼ì²âÊÇ·ñÒª¹Ø±ÕʱÊäÈë 1*************/
-/****sensor_pos:0 close ¹Ø±ÕÄÖÁåʱʱ    ÊäÈë 0*************/
-/*********************·µ»Ø²ÎÊýÇé¿ö˵Ã÷*********************/
-/***********************·­×ª¹¦Äܼì²â***********************/
-/**Return:  1     ±¸×¢ËµÃ÷:ÆÁÄ»ÒÑ·­×ª£¬¹Ø±ÕÄÖÖÓ************/
-/**Return:  0     ±¸×¢ËµÃ÷:ÆÁĻδ·­×ª£¬²»¹Ø±ÕÄÖÖÓ**********/
+/***********输入参数:sensor_pos***********/
+/****sensor_pos:1 open  检测是否要关闭时输入 1*************/
+/****sensor_pos:0 close 关闭闹铃时时    输入 0*************/
+/*********************返回参数情况说明*********************/
+/***********************翻转功能检测***********************/
+/**Return:  1     备注说明:屏幕已翻转,关闭闹钟************/
+/**Return:  0     备注说明:屏幕未翻转,不关闭闹钟**********/
 
 
-/**************************Ò¡»Î¹¦ÄÜ************************/
+/**************************摇晃功能************************/
 bool SL_Get_Phone_Answer_Status(unsigned char Sway_Degree,unsigned char Sway_Num);
-/***********ÊäÈë²ÎÊý£ºÒ¡»ÎµÈ¼¶0--10  Ò¡»ÎÊýÁ¿0--10***********************/
-/***Ò¡»ÎµÈ¼¶£ºÉèÖÃֵԽС£¬ÐèÒªÒ¡»ÎµÄ·ù¶ÈԽС£¬Ô½ÈÝÒ×´¥·¢½ÓÌý¶¯×÷*********/
-/***Ò¡»ÎÊýÁ¿£ºÉèÖÃֵԽС£¬ÐèÒªÒ¡»ÎµÄ´ÎÊýÔ½ÉÙ£¬Ô½ÈÝÒ×´¥·¢½ÓÌý¶¯×÷*********/
-/***********·µ»Ø²ÎÊýÇé¿ö˵Ã÷*******************************/
-/**Return:  1     ±¸×¢ËµÃ÷:Ò¡»Î¶¯×÷³ÉÁ¢£¬½ÓÌýµç»°**********/
-/**Return:  0     ±¸×¢ËµÃ÷:Ò¡»Î¶¯×÷²»³ÉÁ¢£¬²»½ÓÌýµç»°******/
+/***********输入参数:摇晃等级0--10  摇晃数量0--10***********************/
+/***摇晃等级:设置值越小,需要摇晃的幅度越小,越容易触发接听动作*********/
+/***摇晃数量:设置值越小,需要摇晃的次数越少,越容易触发接听动作*********/
+/***********返回参数情况说明*******************************/
+/**Return:  1     备注说明:摇晃动作成立,接听电话**********/
+/**Return:  0     备注说明:摇晃动作不成立,不接听电话******/
 
 
-/************¼Ó²âÏîÄ¿¿Í»§¶Ë²âÊÔ***********/
-/***³õʼ»¯µÄʱºòµ÷ÓÃÓÃÓÚÅжÏFIFOÊÇ·ñÕý³£**/
+/************加测项目客户端测试***********/
+/***初始化的时候调用用于判断FIFO是否正常**/
 bool SL_SC7A20_FIFO_TEST(void);
-/*************ÊäÈë²ÎÊý:ÎÞ*****************/
-/*************·µ»ØÊý¾ÝÇé¿öÈçÏÂ************/
-/**return :1  FIFO Òì³£*******************/
-/**return :0  FIFO Õý³£*******************/
+/*************输入参数:无*****************/
+/*************返回数据情况如下************/
+/**return :1  FIFO 异常*******************/
+/**return :0  FIFO 正常*******************/
 #endif/****SL_Watch_ALGO_DRV__H__*********/
 
 
index 9c87f32..ee6e931 100644 (file)
@@ -240,7 +240,7 @@ void Gsensor_CALLBACK_OP(uint8_t state)
 
 }
 #define  FALL_DETECH_LOW_THRESHOLD 40
-#define FALL_COUNTER_THRESHOLD 6
+#define FALL_COUNTER_THRESHOLD 8
 static uint16_t fall_counter = 0;
 uint8_t gsensor_sc7a20_fall_detect(acc_g_data_t * acc)
 {
index 98728da..404efff 100644 (file)
@@ -153,21 +153,23 @@ class WechatScreen(Screen):
         self.wechat_list.set_size(240, 261)
         self.wechat_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
         self.wechat_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-        
+        self.wechat_list.set_flex_flow(lv.FLEX_FLOW.COLUMN)#自动排成一列对齐
         #建立控件
         self.wechat_list_dict = []
         for i in range(self.MXA_MSG):
-            wechat_btn = lv.btn(self.wechat_list)
+            wechat_obj = lv.obj(self.wechat_list)
+            wechat_obj.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+            wechat_btn = lv.btn(wechat_obj)
             wechat_btn.add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
             _btn_label1 = lv.label(wechat_btn)
             _btn_label1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
             _btn_label2 = lv.label(wechat_btn)
             _btn_img = lv.img(wechat_btn)
-            wechat_btn.add_flag(lv.obj.FLAG.HIDDEN)
+            wechat_obj.add_flag(lv.obj.FLAG.HIDDEN)
             wechat_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             wechat_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.play_label_cb(e)),
             lv.EVENT.CLICKED, None)
-            self.wechat_list_dict.append({"num":i,"wechat_btn":wechat_btn,"_btn_label1":_btn_label1,"_btn_label2":_btn_label2,"_btn_img":_btn_img})
+            self.wechat_list_dict.append({"num":i,"wechat_obj":wechat_obj,"wechat_btn":wechat_btn,"_btn_label1":_btn_label1,"_btn_label2":_btn_label2,"_btn_img":_btn_img})
 
         EventMesh.subscribe("wechat_updata_list_show", self.wechat_updata_list_show)
         EventMesh.subscribe("get_wechat_data", self.get_wechat_data)
@@ -276,7 +278,7 @@ class WechatScreen(Screen):
                             j = 1
                         key = "%02d"%(j)
                         if j > len(self.wechat_recode_list) -1:
-                            self.wechat_list_dict[i]["wechat_btn"].add_flag(lv.obj.FLAG.HIDDEN)
+                            self.wechat_list_dict[i]["wechat_obj"].add_flag(lv.obj.FLAG.HIDDEN)
                             continue
                         j+=1
                         
@@ -296,19 +298,19 @@ class WechatScreen(Screen):
                         
                         #wechat_btn = lv.btn(self.wechat_list)
                         # if value.find("R:") != -1:self.wechat_list_dict[i]
-                        
+                        self.wechat_list_dict[i]["wechat_obj"].set_size(240,lv.SIZE.CONTENT)
                         if value.find("R:") != -1 or value.find("T:") != -1 :#显示文字:
                             if value.find("T:") != -1:
-                                self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,62)
+                                self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,lv.SIZE.CONTENT)
                             else:
                                  self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,62)
 
-                            self.wechat_list_dict[i]["wechat_btn"].set_pos(10,self.startY )
+                            self.wechat_list_dict[i]["wechat_btn"].set_pos(10,0 )
                             #self.wechat_list_dict[i]["wechat_btn"].add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
                             self.wechat_list_dict[i]["wechat_btn"].set_style_bg_color(lv.color_make(0xff, 0xff, 0xff), lv.PART.MAIN | lv.STATE.DEFAULT)
                         elif value.find("S:") != -1 :
                             self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,62)
-                            self.wechat_list_dict[i]["wechat_btn"].set_pos(230-self.startWidth,self.startY )
+                            self.wechat_list_dict[i]["wechat_btn"].set_pos(230-self.startWidth,0 )
                             #for k in range(100):
                             #self.wechat_list_dict[i]["wechat_btn"].add_style(style_wechat_r_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
                             self.wechat_list_dict[i]["wechat_btn"].set_style_bg_color(lv.color_make(0x00, 0xff, 0x2a), lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -324,10 +326,13 @@ class WechatScreen(Screen):
                             self.wechat_list_dict[i]["_btn_label1"].set_pos(self.startWidth-78, 18)
                             self.wechat_list_dict[i]["_btn_label1"].set_text(str(self.msg_tmp)+'\"')
                         elif value.find("T:") != -1:
-                            self.wechat_list_dict[i]["_btn_label1"].set_size(216, 66)
+                            self.wechat_list_dict[i]["_btn_label1"].set_size(216, lv.SIZE.CONTENT)
                             self.wechat_list_dict[i]["_btn_label1"].set_pos(0, 0)
+                            print("self.msg_tmp:{}".format(self.msg_tmp))
+                            self.msg_tmp = self.msg_tmp.replace(':',':\n',1)
+                            print("self.msg_tmp:{}".format(self.msg_tmp))
                             self.wechat_list_dict[i]["_btn_label1"].set_text(str(self.msg_tmp))
-                            self.wechat_list_dict[i]["_btn_label1"].set_long_mode(lv.label.LONG.DOT)
+                            self.wechat_list_dict[i]["_btn_label1"].set_long_mode(lv.label.LONG.WRAP)
                         #self.wechat_list_dict[i]["_btn_label1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
                         #_btn_label2 = lv.label(wechat_btn)
                         self.wechat_list_dict[i]["_btn_label2"].set_size(0, 0)
@@ -350,10 +355,10 @@ class WechatScreen(Screen):
                             self.wechat_list_dict[i]["_btn_img"].clear_flag(lv.obj.FLAG.HIDDEN)
                         else :
                             self.wechat_list_dict[i]["_btn_img"].add_flag(lv.obj.FLAG.HIDDEN)
-                        self.wechat_list_dict[i]["wechat_btn"].clear_flag(lv.obj.FLAG.HIDDEN)
+                        self.wechat_list_dict[i]["wechat_obj"].clear_flag(lv.obj.FLAG.HIDDEN)
                         
                         wechat_btn_end = i
-                    self.wechat_list_dict[wechat_btn_end]["wechat_btn"].scroll_to_view(lv.ANIM.OFF)
+                    self.wechat_list_dict[wechat_btn_end]["wechat_obj"].scroll_to_view(lv.ANIM.OFF)
                         
                     # bottom_btn1 = self.wechat_list.get_child(-1)
                     # bottom_btn1.scroll_to_view(lv.ANIM.ON)