*/
void hid_gatt_report_notify(uint8_t conidx, uint8_t rpt_info_id, uint8_t *p_data, uint16_t len)
{
+ co_printf("hid_gatt_report_notify!!!!!!!!!\n");
if (rpt_info_id < HID_NUM_REPORTS && hid_link_ntf_enable[conidx])
{
gatt_ntf_t ntf;
ntf.data_len = len;
ntf.p_data = p_data;
gatt_notification(ntf);
+
}
}
#include "user_task.h"
#include "simple_gatt_service.h"
-
+#include "bizbus_common.h"
#include "timer.h"
/*
// Characteristic 2 data
#define SP_CHAR2_VALUE_LEN 40
-uint8_t sp_char2_value[SP_CHAR2_VALUE_LEN] = {0};
+//uint8_t sp_char2_value[SP_CHAR2_VALUE_LEN] = {0};
// Characteristic 2 client characteristic configuration
#define SP_CHAR2_CCC_LEN 2
uint8_t sp_char2_ccc[SP_CHAR2_CCC_LEN] = {0};
+#define SP_ALIAPP_VALUE_LEN 512
+//uint8_t sp_aliapp_value[SP_ALIAPP_VALUE_LEN] = {0};
+#define SP_ALIAPP_CCC_LEN 2
+uint8_t sp_aliapp_ccc[SP_ALIAPP_CCC_LEN] = {0};
+
+#define SP_HID_VALUE_LEN 40
+//uint8_t sp_aliapp_value[SP_ALIAPP_VALUE_LEN] = {0};
+#define SP_HID_CCC_LEN 2
+uint8_t sp_hid_ccc[SP_HID_CCC_LEN] = {0};
/*
* TYPEDEFS (ÀàÐͶ¨Òå)
*/
GATT_PROP_READ | GATT_PROP_WRITE, /* Permissions */
SP_CHAR1_CCC_LEN, /* Max size of the value */
NULL, /* Value of the attribute */ /* Can assign a buffer here, or can be assigned in the application by user */
- },
+ },
+
// Characteristic 2 Declaration
[SP_IDX_CHAR2_DECLARATION] = {
GATT_PROP_READ | GATT_PROP_WRITE, /* Permissions */
SP_CHAR1_CCC_LEN, /* Max size of the value */
NULL, /* Value of the attribute */ /* Can assign a buffer here, or can be assigned in the application by user */
- },
+ },
+ //HIDÄ£ÄâͨµÀ,ÒòΪwindowsÓ¦ÓÃÈí¼þÎÞ·¨Ê¹Óñê×¼µÄhidͨµÀ£¬ËùÒÔ¼ÓÒ»¸öÄ£Äâ
+ [SP_IDX_HID_DECLARATION] = {
+ { UUID_SIZE_2, UUID16_ARR(GATT_CHARACTER_UUID) }, /* UUID */
+ GATT_PROP_READ, /* Permissions */
+ 0, /* Max size of the value */
+ NULL, /* Value of the attribute */
+ },
+ [SP_IDX_HID_VALUE] = {
+ { UUID_SIZE_16, SP_HID_TX_RX_UUID }, /* UUID */
+ GATT_PROP_WRITE | GATT_PROP_NOTI, /* Permissions */
+ SP_HID_VALUE_LEN, /* Max size of the value */
+ NULL, /* Value of the attribute */ /* Can assign a buffer here, or can be assigned in the application by user */
+ },
+ [SP_IDX_HID_CFG] = {
+ { UUID_SIZE_2, UUID16_ARR(GATT_CLIENT_CHAR_CFG_UUID) }, /* UUID */
+ GATT_PROP_READ | GATT_PROP_WRITE, /* Permissions */
+ SP_HID_CCC_LEN, /* Max size of the value */
+ NULL, /* Value of the attribute */ /* Can assign a buffer here, or can be assigned in the application by user */
+ },
+
+ // ali °¢Àïapp ¼øÈ¨×¨ÓÃͨµÀ
+ [SP_IDX_ALIAPP_DECLARATION] = {
+ { UUID_SIZE_2, UUID16_ARR(GATT_CHARACTER_UUID) }, /* UUID */
+ GATT_PROP_READ, /* Permissions */
+ 0, /* Max size of the value */
+ NULL, /* Value of the attribute */
+ },
+ [SP_IDX_ALIAPP_VALUE] = {
+ { UUID_SIZE_16, SP_ALIAPP_TX_RX_UUID }, /* UUID */
+ GATT_PROP_WRITE | GATT_PROP_NOTI, /* Permissions */
+ SP_ALIAPP_VALUE_LEN, /* Max size of the value */
+ NULL, /* Value of the attribute */ /* Can assign a buffer here, or can be assigned in the application by user */
+ },
+ [SP_IDX_ALIAPP_CFG] = {
+ { UUID_SIZE_2, UUID16_ARR(GATT_CLIENT_CHAR_CFG_UUID) }, /* UUID */
+ GATT_PROP_READ | GATT_PROP_WRITE, /* Permissions */
+ SP_ALIAPP_CCC_LEN, /* Max size of the value */
+ NULL, /* Value of the attribute */ /* Can assign a buffer here, or can be assigned in the application by user */
+ },
+
};
void ntf_data(uint8_t con_idx,uint8_t att_idx,uint8_t *data,uint16_t len)
{
memcpy(p_msg->param.msg.p_msg_data, sp_char1_ccc, SP_CHAR1_CCC_LEN);
return SP_CHAR1_CCC_LEN;
+ }else if(p_msg->att_idx == SP_IDX_ALIAPP_CFG)
+ {
+ memcpy(p_msg->param.msg.p_msg_data, sp_aliapp_ccc, SP_ALIAPP_CCC_LEN);
+ co_printf("SP_IDX_ALIAPP_CFG:%s\n",sp_aliapp_ccc);
+ return SP_ALIAPP_CCC_LEN;
+ }else if(p_msg->att_idx == SP_IDX_HID_CFG)
+ {
+ memcpy(p_msg->param.msg.p_msg_data, sp_hid_ccc, SP_HID_CCC_LEN);
+ return SP_HID_CCC_LEN;
}
else if(p_msg->att_idx == SP_IDX_CHAR2_CFG)
{
user_event_send(USER_EVT_BLE_RX, p_msg->param.msg.p_msg_data, p_msg->param.msg.msg_len);
co_printf("char1_recv(att_idx:%d, handle:0x%02x): ", p_msg->att_idx, p_msg->handle);
show_reg(p_msg->param.msg.p_msg_data,p_msg->param.msg.msg_len,1);
+ }else if (p_msg->att_idx == SP_IDX_ALIAPP_VALUE)
+ {
+ user_event_send(USER_EVT_ALIAPP_RX, p_msg->param.msg.p_msg_data, p_msg->param.msg.msg_len);
+ co_printf("SP_IDX_ALIAPP_VALUE(att_idx:%d, handle:0x%02x): ", p_msg->att_idx, p_msg->handle);
+ show_reg(p_msg->param.msg.p_msg_data,p_msg->param.msg.msg_len,1);
+ }else if (p_msg->att_idx == SP_IDX_HID_VALUE)
+ {
+ //user_event_send(USER_EVT_BLE_RX, p_msg->param.msg.p_msg_data, p_msg->param.msg.msg_len);
+ co_printf("hid_recv(att_idx:%d, handle:0x%02x): ", p_msg->att_idx, p_msg->handle);
+ show_reg(p_msg->param.msg.p_msg_data,p_msg->param.msg.msg_len,1);
}
else if (p_msg->att_idx == SP_IDX_CHAR2_VALUE)
{
{
ntf_char2_enable = 0;
co_printf("char2_ntf_disable\r\n");
+ }
+ }else if (p_msg->att_idx == SP_IDX_HID_CFG)
+ {
+ memcpy(sp_hid_ccc,p_msg->param.msg.p_msg_data,SP_HID_CCC_LEN);
+ if(p_msg->param.msg.p_msg_data[0] & 0x01)
+ {
+
+ co_printf("hid_ntf_enable\r\n");
+ }
+ else
+ {
+ co_printf("hid_ntf_disable\r\n");
+ }
+ }else if (p_msg->att_idx == SP_IDX_ALIAPP_CFG)
+ {
+ memcpy(sp_char2_ccc,p_msg->param.msg.p_msg_data,SP_ALIAPP_CCC_LEN);
+ if(p_msg->param.msg.p_msg_data[0] & 0x01)
+ {
+
+ co_printf("SP_IDX_ALIAPP_CFG\r\n");
+ }
+ else
+ {
+
+ co_printf("SP_IDX_ALIAPP_CFG\r\n");
}
}
}
SP_IDX_CHAR1_VALUE,
SP_IDX_CHAR1_CFG,
+
SP_IDX_CHAR2_DECLARATION,
SP_IDX_CHAR2_VALUE,
SP_IDX_CHAR2_CFG,
-
+ //HIDÄ£ÄâͨµÀ,ÒòΪwindowsÓ¦ÓÃÈí¼þÎÞ·¨Ê¹Óñê×¼µÄhidͨµÀ£¬ËùÒÔ¼ÓÒ»¸öÄ£Äâ
+ SP_IDX_HID_DECLARATION,
+ SP_IDX_HID_VALUE,
+ SP_IDX_HID_CFG,
+ //°¢Àï¼øÈ¨Í¨µÀ
+ SP_IDX_ALIAPP_DECLARATION,
+ SP_IDX_ALIAPP_VALUE,
+ SP_IDX_ALIAPP_CFG,
+
SP_IDX_NB,
};
// Simple GATT Profile Service UUID
#define SP_SVC_UUID 0xFFF1
-
-#define SP_CHAR1_TX_RX_UUID {0xb8, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07}
+#define SP_HID_TX_RX_UUID {0xb6, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb6, 0x83, 0x07}
+#define SP_ALIAPP_TX_RX_UUID {0xb7, 0x4c, 0x19, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb7, 0x83, 0x07}
+#define SP_CHAR1_TX_RX_UUID {0xb8, 0x4c, 0x19, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07}
#define SP_CHAR2_TX_RX_UUID {0xb9, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07}
/*
if (!priv->init) {
priv->frame.frequency = sbc->frequency;
- priv->frame.allocation = sbc->allocation;
+ priv->frame.allocation = (int)sbc->allocation;
priv->frame.subband_mode = sbc->subbands;
priv->frame.subbands = sbc->subbands ? 8 : 4;
priv->frame.block_mode = sbc->blocks;
&encoder_env.out_buffer[encoder_env.encode_write_pos],
encoder_env.frame_size,
&encoded_len);
+ co_printf("org_len:%d\n",org_len);
}
encoder_env.reserved_space -= encoder_env.frame_size;
encoder_frame_out_func(&encoder_env.out_buffer[encoder_env.encode_write_pos],encoder_env.frame_size);
#endif
-
+#define USER_MEM_API_ENABLE 1
/** @functions API for memory leakage debug,
* before call these functions, must define USER_MEM_API_ENABLE in your project Preprocessor Symbols.
* @{
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
; *
; *****************************************************************************/
+Heap_Size EQU 0x00000100
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
EXPORT ssp_isr_ram [WEAK]
EXPORT pdm_isr_ram [WEAK]
EXPORT uart0_isr_ram [WEAK]
- EXPORT uart1_isr_ram [WEAK]
+ EXPORT uart1_isr_ram [WEAK]
+ IF :DEF:__MICROLIB
+ EXPORT __heap_base
+ EXPORT __heap_limit
+ ENDIF
adc_isr
ssp_isr_ram
pdm_isr_ram
#include "bizbus_common.h"
#include "upay_vendor.h"
-//#include "os_mem.h"
-//#include "co_printf.h"
-//#include "stdarg.h"
+#include "flash_usage_config.h"
+#include "os_mem.h"
+#include "co_printf.h"
+#include "stdarg.h"
+#include "driver_flash.h"
+#include "stdlib.h"
+#include "driver_system.h"
+#include "ble_simple_peripheral.h"
+static int32_t ali_timestamp = 0;
+static int32_t system_curr_time = 0;//设置时间的时候保存的系统运行时间
//安全数据API,需要一块单独大小为2.5K的区域存储,要求恢复出厂设置不能被清除、OTA不能被清除、常规烧录升级不能被清除
/**
* 安全数据写入,大小为2.5K,需要厂商实现
*/
int32_t hal_flash_id2_write(uint32_t offset, void *data, uint32_t write_len)
{
- return 1;
+ co_printf("hal_flash_id2_write:offset:%d,data:%s,write_len:%d\n",offset,data,write_len);
+ flash_erase(ALI_DATA_ADDR+offset,write_len);
+ flash_write(ALI_DATA_ADDR+offset,write_len,(uint8_t *)data);
+ return 0;
}
/**
*/
int32_t hal_flash_id2_read(uint32_t offset, void *data, uint32_t read_len)
{
- return 1;
+
+ flash_read(ALI_DATA_ADDR+offset,read_len,(uint8_t *)data);
+ co_printf("hal_flash_id2_read:offset:%d,data:%s,read_len:%d\n",ALI_DATA_ADDR+offset,data,read_len);
+ return 0;
}
/**
* 安全数据擦除,大小为2.5K,需要厂商实现
int32_t hal_flash_id2_erase(uint32_t erase_offset,uint32_t earse_len)
{
- return 1;
+ co_printf("hal_flash_id2_erase:offset:%d,earse_len:%d\n",erase_offset,earse_len);
+ flash_erase(ALI_DATA_ADDR+erase_offset,earse_len);
+ return 0;
}
// hal 需要厂商实现,与APP SDK端的数据收发
bizbus_ret_t bizbus_hal_send(char *sid, uint8_t *data, uint32_t data_len)
{
- bizbus_ret_t a;
- return a;
-}
-bizbus_ret_t bizbus_hal_recv(uint8_t * data, uint32_t data_len)
-{
- bizbus_ret_t a;
- return a;
+ ble_aliapp_data_tx(data,data_len);
+ return BIZBUS_SUCCESS;
}
+// bizbus_ret_t bizbus_hal_recv(uint8_t * data, uint32_t data_len)
+// {
+
+// return BIZBUS_SUCCESS;
+// }
//厂商实现,设置ble 系统UTC时间
bizbus_ret_t bizbus_set_time(uint8_t *time_str)
{
- bizbus_ret_t a;
- return a;
+ ali_timestamp = atoi((char *)time_str);
+ system_curr_time = system_get_curr_time();
+ return BIZBUS_SUCCESS;
}
+//收到数据调用该函数
// bizbus_ret_t bizbus_recv(uint8_t *json_string, uint32_t data_len)
// {
void *aos_malloc(unsigned int size)
{
- return 0;//os_malloc(size);
+ return os_malloc(size);
}
void aos_free(void *mem)
{
- //os_free(mem);
+ os_free(mem);
}
int aos_kv_init(void)
{
}
void aos_printf(const char *fmt, ...)
{
- // va_list args;
- // va_start(args,fmt);
- // co_printf(fmt,args);
- // va_end(args);
+ va_list args;
+ va_start(args,fmt);
+ co_printf(fmt,args);
+ va_end(args);
//co_printf(fmt,##__VA_ARGS__);
}
-//#define aos_printf(fmt, ...) co_printf(fmt,##__VA_ARGS__);
+//
/*!!!!!!!!!!*/
uint32_t upay_get_timestamp(void)
{
- return 1;
+ return ali_timestamp+((system_get_curr_time()-system_curr_time)/1000);
}
int upay_id2_check_status(uint8_t *id2_st)
{
}
bizbus_ret_t bizbus_gtd_id2_init(void)
{
- bizbus_ret_t a;
- return a;
+
+ return BIZBUS_SUCCESS;
}
bizbus_ret_t bizbus_gtd_wear_init(void)
{
- bizbus_ret_t a;
- return a;
+
+ return BIZBUS_SUCCESS;
}
bizbus_ret_t bizbus_recv_gtd_hdl(uint8_t *data, uint32_t data_len)
{
- bizbus_ret_t a;
- return a;
+
+ return BIZBUS_SUCCESS;
}
void* ALIPAY_malloc(uint32_t size)
{
void* ALIPAY_realloc(void* pt, uint32_t size)
{
- return 0;//os_realloc(pt,size);
-}
\ No newline at end of file
+ return os_realloc(pt,size);
+}
#define _BIZBUS_HAL_H_
#include <stdint.h>
-//#include <stdio.h>
+#include <stdio.h>
+#include <string.h>
//#include <stdbool.h>
-
+//#define aos_printf(fmt, ...) co_printf(fmt,##__VA_ARGS__);
typedef enum _bizbus_ret_t {
BIZBUS_SUCCESS,
BIZBUS_ERR_INIT_FAILED,
bizbus_ret_t bizbus_register_ds_get(bizbus_ds_get_func ds_get_func);
bizbus_ret_t bizbus_register_dn_get(bizbus_dn_get_func dn_get_func);
bizbus_ret_t bizbus_register_pk_get(bizbus_pk_get_func pk_get_func);
-
+bizbus_ret_t bizbus_recv(uint8_t *json_string, uint32_t data_len);
#endif
+++ /dev/null
-/*
- Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-
-#ifndef cJSON__h
-#define cJSON__h
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
-#define __WINDOWS__
-#endif
-
-#ifdef __WINDOWS__
-
-/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention. For windows you have 3 define options:
-
-CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols
-CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default)
-CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol
-
-For *nix builds that support visibility attribute, you can define similar behavior by
-
-setting default visibility to hidden by adding
--fvisibility=hidden (for gcc)
-or
--xldscope=hidden (for sun cc)
-to CFLAGS
-
-then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does
-
-*/
-
-#define CJSON_CDECL __cdecl
-#define CJSON_STDCALL __stdcall
-
-/* export symbols by default, this is necessary for copy pasting the C and header file */
-#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS)
-#define CJSON_EXPORT_SYMBOLS
-#endif
-
-#if defined(CJSON_HIDE_SYMBOLS)
-#define CJSON_PUBLIC(type) type CJSON_STDCALL
-#elif defined(CJSON_EXPORT_SYMBOLS)
-#define CJSON_PUBLIC(type) __declspec(dllexport) type CJSON_STDCALL
-#elif defined(CJSON_IMPORT_SYMBOLS)
-#define CJSON_PUBLIC(type) __declspec(dllimport) type CJSON_STDCALL
-#endif
-#else /* !__WINDOWS__ */
-#define CJSON_CDECL
-#define CJSON_STDCALL
-
-#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
-#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type
-#else
-#define CJSON_PUBLIC(type) type
-#endif
-#endif
-
-/* project version */
-#define CJSON_VERSION_MAJOR 1
-#define CJSON_VERSION_MINOR 7
-#define CJSON_VERSION_PATCH 14
-
-#include <stddef.h>
-
-/* cJSON Types: */
-#define cJSON_Invalid (0)
-#define cJSON_False (1 << 0)
-#define cJSON_True (1 << 1)
-#define cJSON_NULL (1 << 2)
-#define cJSON_Number (1 << 3)
-#define cJSON_String (1 << 4)
-#define cJSON_Array (1 << 5)
-#define cJSON_Object (1 << 6)
-#define cJSON_Raw (1 << 7) /* raw json */
-
-#define cJSON_IsReference 256
-#define cJSON_StringIsConst 512
-
-/* The cJSON structure: */
-typedef struct cJSON
-{
- /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
- struct cJSON *next;
- struct cJSON *prev;
- /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
- struct cJSON *child;
-
- /* The type of the item, as above. */
- int type;
-
- /* The item's string, if type==cJSON_String and type == cJSON_Raw */
- char *valuestring;
- /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
- int valueint;
- /* The item's number, if type==cJSON_Number */
- double valuedouble;
-
- /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
- char *string;
-} cJSON;
-
-typedef struct cJSON_Hooks
-{
- /* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */
- void *(CJSON_CDECL *malloc_fn)(size_t sz);
- void (CJSON_CDECL *free_fn)(void *ptr);
-} cJSON_Hooks;
-
-typedef int cJSON_bool;
-
-/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
- * This is to prevent stack overflows. */
-#ifndef CJSON_NESTING_LIMIT
-#define CJSON_NESTING_LIMIT 1000
-#endif
-
-/* returns the version of cJSON as a string */
-CJSON_PUBLIC(const char*) cJSON_Version(void);
-
-/* Supply malloc, realloc and free functions to cJSON */
-CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
-
-/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
-/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */
-CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length);
-/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
-/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated);
-
-/* Render a cJSON entity to text for transfer/storage. */
-CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
-/* Render a cJSON entity to text for transfer/storage without any formatting. */
-CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
-/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
-CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
-/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
-/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
-CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
-/* Delete a cJSON entity and all subentities. */
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
-
-/* Returns the number of items in an array (or object). */
-CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
-/* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */
-CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
-/* Get item "string" from object. Case insensitive. */
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
-CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
-/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
-CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
-
-/* Check item type and return its value */
-CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
-CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);
-
-/* These functions check the type of an item */
-CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);
-
-/* These calls create a cJSON item of the appropriate type. */
-CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
-CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
-CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
-/* raw json */
-CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
-CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
-
-/* Create a string where valuestring references a string so
- * it will not be freed by cJSON_Delete */
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
-/* Create an object/array that only references it's elements so
- * they will not be freed by cJSON_Delete */
-CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
-CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
-
-/* These utilities create an Array of count items.
- * The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/
-CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);
-
-/* Append item to the specified array/object. */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
-/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
- * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
- * writing to `item->string` */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
-/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
-
-/* Remove/Detach items from Arrays/Objects. */
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
-
-/* Update array items. */
-CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
-
-/* Duplicate a cJSON item */
-CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
-/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
- * need to be released. With recurse!=0, it will duplicate any children connected to the item.
- * The item->next and ->prev pointers are always zero on return from Duplicate. */
-/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
- * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
-CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
-
-/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings.
- * The input pointer json cannot point to a read-only address area, such as a string constant,
- * but should point to a readable and writable adress area. */
-CJSON_PUBLIC(void) cJSON_Minify(char *json);
-
-/* Helper functions for creating and adding items to an object at the same time.
- * They return the added item or NULL on failure. */
-CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean);
-CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);
-CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);
-CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw);
-CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);
-
-/* When assigning an integer value, it needs to be propagated to valuedouble too. */
-#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
-/* helper for the cJSON_SetNumberValue macro */
-CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
-#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
-/* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */
-CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring);
-
-/* Macro for iterating over an array or object */
-#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
-
-/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */
-CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
-CJSON_PUBLIC(void) cJSON_free(void *object);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
//#include "upay_common.h"
-
+//#define aos_printf(fmt, ...) co_printf(fmt,##__VA_ARGS__);
//安全数据API,需要一块单独大小为2.5K的区域存储,要求恢复出厂设置不能被清除、OTA不能被清除、常规烧录升级不能被清除
/**
* 安全数据写入,大小为2.5K,需要厂商实现
}
else
{
- gap_bond_info_t bond_info;
+ //gap_bond_manager_delete_all();
+ gap_bond_info_t bond_info={0};
+ co_printf("gap_bond_manager_get_info 1 !!!!!!!!\n");
gap_bond_manager_get_info(0, &bond_info);
-
+ co_printf("gap_bond_manager_get_info 2 bond_info.bond_flag:%d!!!!!!!!\n",bond_info.bond_flag);
// Set advertising parameters
gap_adv_param_t adv_param;
adv_param.adv_mode = GAP_ADV_MODE_UNDIRECT;
adv_param.adv_addr_type = GAP_ADDR_TYPE_PRIVATE;
adv_param.adv_chnl_map = GAP_ADV_CHAN_ALL;
adv_param.adv_filt_policy = GAP_ADV_ALLOW_SCAN_ANY_CON_ANY;
- //adv_param.disc_mode = (bond_info.bond_flag == true) ? GAP_ADV_DISC_MODE_NON_DISC : GAP_ADV_DISC_MODE_GEN_DISC;
+ adv_param.disc_mode = (bond_info.bond_flag == true) ? GAP_ADV_DISC_MODE_NON_DISC : GAP_ADV_DISC_MODE_GEN_DISC;
adv_param.adv_intv_min = MSEC_TO_UNITS(30, UNIT_0_625_MS);
adv_param.adv_intv_max = MSEC_TO_UNITS(30, UNIT_0_625_MS);
memcpy(&scan_rsp_data[2], name, ADV_NAME_BT1_LEN);
// Set advertising data & scan response data
+ co_printf("gap_bond_manager_get_info 3 !!!!!!!!\n");
gap_set_advertising_data(adv_data, (bond_info.bond_flag == true) ? (sizeof(adv_data) - 7) : sizeof(adv_data));
+ co_printf("gap_bond_manager_get_info 4 !!!!!!!!\n");
gap_set_advertising_rsp_data(scan_rsp_data, ADV_NAME_BT1_LEN + 2);
co_printf("%s\r\n", (bond_info.bond_flag == true) ? "Have bond info" : "Nothing bond info");
}
co_printf("Local MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n", addr.addr[5], addr.addr[4], addr.addr[3], addr.addr[2], addr.addr[1], addr.addr[0]);
// Adding services to database
- dis_gatt_add_service();
- sp_gatt_add_service();
- hid_gatt_add_service();
- ota_gatt_add_service();
- batt_gatt_add_service();
+ dis_gatt_add_service();//
+ sp_gatt_add_service();//¼Òô
+ hid_gatt_add_service();//hid
+ ota_gatt_add_service();//Éý¼¶
+ batt_gatt_add_service();//µç³Ø
}
void enable_latency(void)
}
smart_latency_cnt_reset();
}
+//Ä£ÄâHID·¢ËÍ
+void ble_s_hid_data_tx(uint8_t * p_data, uint8_t len)
+{
+ //ntf_data(m_conn_index, SP_IDX_CHAR1_VALUE, p_data, len);
+ ntf_data(m_conn_index, SP_IDX_HID_VALUE, p_data, len);
+ disable_latency();
+ conn_sleep_cnt_reset();
+}
+#define aliapp_data_tx_one_len 150
+void ble_aliapp_data_tx(uint8_t * p_data, uint16_t len)
+{
+ //ntf_data(m_conn_index, SP_IDX_CHAR1_VALUE, p_data, len);
+ int count = len/aliapp_data_tx_one_len;
+ ntf_data(m_conn_index, SP_IDX_ALIAPP_VALUE, "-$$", strlen("-$$"));
+ for(int i=0;i<(count);i++)
+ {
+ ntf_data(m_conn_index, SP_IDX_ALIAPP_VALUE, p_data+i*aliapp_data_tx_one_len, aliapp_data_tx_one_len);
+ }
+ if(len%aliapp_data_tx_one_len)
+ ntf_data(m_conn_index, SP_IDX_ALIAPP_VALUE, p_data+(count)*aliapp_data_tx_one_len, (len-(count)*aliapp_data_tx_one_len));
+ ntf_data(m_conn_index, SP_IDX_ALIAPP_VALUE, "$$-\n", strlen("$$-\n"));
+ disable_latency();
+ conn_sleep_cnt_reset();
+}
void ble_app_data_tx(uint8_t * p_data, uint8_t len)
{
ntf_data(m_conn_index, SP_IDX_CHAR1_VALUE, p_data, len);
-
+ //ntf_data(m_conn_index, SP_IDX_ALIAPP_VALUE, p_data, len);
disable_latency();
conn_sleep_cnt_reset();
}
void ble_hid_data_tx(uint8_t * p_data, uint8_t len)
{
+ co_printf("ble_hid_data_tx!!!!!!!!!\n");
ntf_data(m_conn_index, SP_IDX_CHAR2_VALUE, p_data, len);
disable_latency();
if (g_device_param.mouse_mode == WORK_2_4G_MODE)
ble_hid_data_tx(mouse_buff, sizeof(mouse_buff));
else
+ {
+ ble_s_hid_data_tx(mouse_buff, sizeof(mouse_buff));
hid_gatt_report_notify(m_conn_index, 0, mouse_buff, sizeof(mouse_buff));
+ }
+
disable_latency();
conn_sleep_cnt_reset();
if (g_device_param.mouse_mode == WORK_2_4G_MODE)
ble_hid_data_tx(code_buff, sizeof(code_buff));
else
+ {
+ ble_s_hid_data_tx(code_buff, sizeof(code_buff));
hid_gatt_report_notify(m_conn_index, 1, code_buff, sizeof(code_buff));
+ }
+
disable_latency();
conn_sleep_cnt_reset();
if (g_device_param.mouse_mode == WORK_2_4G_MODE)
ble_hid_data_tx(p_keys_buff, 8);
else
+ {
+ ble_s_hid_data_tx(p_keys_buff, 8);
hid_gatt_report_notify(m_conn_index, 2, p_keys_buff, 8);
+ }
+
disable_latency();
conn_sleep_cnt_reset();
uint8_t curr_conn_index_get(void);
void enable_latency(void);
void disable_latency(void);
+void ble_aliapp_data_tx(uint8_t * p_data, uint16_t len);
void ble_app_data_tx(uint8_t * p_data,uint8_t len);
void ble_hid_data_tx(uint8_t * p_data, uint8_t len);
void ble_send_debug(char * str, uint8_t len, uint32_t data);
#define HW_VERSION "V1.0"
#define FW_VERSION "V1.0.109"
-#define ADV_NAME_BT1_LEN 12
-#define ADV_NAME_BT1 "FR_Mouse_BLE"
+#define ADV_NAME_BT1_LEN 7
+#define ADV_NAME_BT1 "VMouse"
-#define ADV_NAME_2_4G_LEN 11
-#define ADV_NAME_2_4G "FR_Mouse_DG"
+#define ADV_NAME_2_4G_LEN 7
+#define ADV_NAME_2_4G "VMouse"
-#define ADV_NAME_2_4G_PAIR_LEN 13
-#define ADV_NAME_2_4G_PAIR "FR_Mouse_DG_P"
+#define ADV_NAME_2_4G_PAIR_LEN 9
+#define ADV_NAME_2_4G_PAIR "VMouse_P"
#define UART_LOG_ENABLE ENABLE // ÓÉÓÚPA3¸´Ó㬴ò¿ªLOG¿ÉÄÜÔì³ÉijЩ¹¦ÄÜÊÜÏÞ
#define WDT_ENABLE ENABLE // ¿´ÃŹ·
#define MOUSE_SLEEP_ENABLE ENABLE // ʹÄÜÊó±êÐÝÃß
#define MOUSE_ADV_SLEEP_TIMEOUT_SEC (20) // Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
-#define MOUSE_CONN_SLEEP_TIMEOUT_SEC (60*10) // Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
+#define MOUSE_CONN_SLEEP_TIMEOUT_SEC (60*1) // Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
/*
* TYPEDEFS (ÀàÐͶ¨Òå)
#define _FLASH_USAGE_CONFIG_H
/*
- * MACROS (ºê¶¨Òå)
+ * MACROS (????)
*/
/*
#define JUMP_TABLE_STATIC_KEY_OFFSET 0x7F000
#define BLE_BONDING_INFO_SAVE_ADDR 0x7D000
#define BLE_REMOTE_SERVICE_SAVE_ADDR 0x7E000
+ #define ALI_DATA_ADDR 0x6f000 //Óû§ÅäÖÃÇø0x7c000-0x7D000
#define FLASH_MAX_SIZE 0x80000
#endif // FOR_4M_FLASH
/*
* uncomment this MACRO if user need protect flash from unexpected erase or write operation
*/
-#define FLASH_PROTECT
+//#define FLASH_PROTECT
#endif // _FLASH_USAGE_CONFIG_H
µÍµçƽ£º2.4Gģʽ
¸¡¿Õ/¸ßµçƽ£ºÀ¶ÑÀģʽ
*/
- if (pmu_get_gpio_value(MODE_DETECT_PIN_PORT, MODE_DETECT_BIT) == 0)
+ //if (pmu_get_gpio_value(MODE_DETECT_PIN_PORT, MODE_DETECT_BIT) == 0)
+ if(1)
{
g_device_param.mouse_mode = WORK_2_4G_MODE;
patch_set_2ms(true);
{
user_data.peer_addr.addr[3] += 1;
}
+ user_data.peer_addr.addr[5] = 0xc0;
+ user_data.peer_addr.addr[4] = 0xc2;
+ user_data.peer_addr.addr[1] = 0xA5;
+ user_data.peer_addr.addr[0] = 0xA5;
gap_address_set(&user_data.peer_addr);
if (user_data_tmp.reset_status == 0xA5A5A5A5)
{
case SINGLE_CLICK:
co_printf("mode_button SINGLE_CLICK\r\n");
+ if(g_device_param.mouse_mode == WORK_BT1_MODE)
+ {
+ g_device_param.mouse_mode = WORK_2_4G_MODE;
+ patch_set_2ms(true);
+ co_printf("[gpio]2.4G mode select\r\n");
+ }
+ else
+ {
+ g_device_param.mouse_mode = WORK_BT1_MODE;
+ co_printf("[gpio]BT mode select\r\n");
+ }
break;
case LONG_PRESS_START:
#include "ble_simple_peripheral.h"
#include "simple_gatt_service.h"
-
+#include "version.h"
/*
* LOCAL VARIABLES
*/
device_param_t g_device_param =
{
- .sensor_model = UNKNOWN,
+ .sensor_model = sensor_UNKNOWN,
.is_enter_sleep = false,
.latency_cnt = SMART_LATENCY_TIMEOUT_SEC,
.bat_cnt = BAT_DETECT_TIMEOUT_PER_10SEC,
*/
void user_custom_parameters(void)
{
-#if 0
+#if 1
__jump_table.addr.addr[0] = 0xBD;
__jump_table.addr.addr[1] = 0xAD;
__jump_table.addr.addr[2] = 0xAA;
*/
__attribute__((section("ram_code"))) void user_entry_before_sleep_imp(void)
{
- uart_putc_noint_no_wait(UART1, 's');
+ //uart_putc_noint_no_wait(UART1, 's');
}
/*********************************************************************
uart_init(UART1, BAUD_RATE_921600);
//NVIC_EnableIRQ(UART1_IRQn);
- uart_putc_noint_no_wait(UART1, 'w');
+ //uart_putc_noint_no_wait(UART1, 'w');
// Do some things here, can be uart print
NVIC_EnableIRQ(PMU_IRQn);
*/
#include "bizbus_common.h"
#include "upay_vendor.h"
+#include "cJSON.h"
void user_entry_after_ble_init(void)
{
co_printf("\r\nFR801X Mouse demo\r\n");
-
+ char *build_date,*build_time;
+ get_SDK_compile_date_time(&build_date,&build_time);
+ co_printf("\r\nbuild_date:%s,build_time%s\r\n",build_date,build_time);
+ co_printf("\r\nbuild_date:%s,build_time%s\r\n",build_date,build_time);
+ co_printf("\r\nbuild_date:%s,build_time%s\r\n",build_date,build_time);
+ #if 1
+ char data [100]={0};
+ sprintf(data,"hahah:%f",23.014);
+ co_printf("\r\nsprintf data:%s!!!!!!!!!!!\r\n",data);
+ // memset(data,'a',sizeof(data)-1);
+ // flash_erase(ALI_DATA_ADDR,sizeof(data));
+ // flash_write(ALI_DATA_ADDR,sizeof(data),(uint8_t *)data);
+ // memset(data,'b',sizeof(data));
+ co_delay_100us(10 * 30);
+ flash_read(ALI_DATA_ADDR,sizeof(data),(uint8_t *)data);
+ co_printf("\r\ndata:%s\r\n",data);
+ #endif
+ cJSON_InitHooks(NULL);
user_timer_init();
user_led_init();
user_gpio_init();
wdt_init(WDT_ACT_CALL_IRQ, 10);
wdt_start();
#endif
- bizbus_init_para_t para;
+ bizbus_init_para_t para = {0};;
+ strcpy((char *)para.pk_str,"a1c7Ojs6HMR");
+ strcpy((char *)para.ps_str,"TxPFIJ5F1kwa0zO3");
+ strcpy((char *)para.version_str, "HAAS-3AX-");
+ strcpy((char *)para.vendor_str, "AAA-BBB-");
+ strcpy((char *)para.id2_pk, "12345678901");
+ para.dn_without_prefix = 1; //新接入客户统一传1
+ mac_addr_t addr;
+ gap_address_get(&addr);
+ sprintf((char *)para.mac_str,"%02X%02X%02X%02X%02X%02X", addr.addr[5], addr.addr[4], addr.addr[3], addr.addr[2], addr.addr[1], addr.addr[0]);
+ co_printf("bizbus_init:mac:%s\n",para.mac_str);
bizbus_init(¶);
+
// Application layer initialization, can included bond manager init,
// advertising parameters init, scanning parameter init, GATT service adding, etc.
simple_peripheral_init();
#undef LOG_LEVEL_MODULE
#define LOG_LEVEL_MODULE (LOG_LEVEL_INFO)
-#define sensor_delay() __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
-
+//#define sensor_delay() __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
+void sensor_delay(void)
+{
+ int count = 30;
+ while(count--)
+ {
+ __nop();
+ }
+}
#define PRODUCT_ID1_REG 0x00
#define PRODUCT_ID2_REG 0x01
#define MOTION_STATUS_REG 0x02
const uint8_t SENSOR_PID_TABLE[SENSOR_MAX][2] =
{
- {0}, // UNKNOWN
- {0x60,0x60}, // PAW3205
+ {0xff}, // UNKNOWN
+ {0x31, 0x00}, // PAW3205
{0x30, 0x02}, // PAW3212
- {0}, // PAW3065
- {0}, // PAW3065XY
- {0}, // KA8
+ {0x31, 0x04}, // PAW3065
+ {0xff}, // PAW3065XY
+ {0xff}, // KA8
{0x58, 0x59}, // KA8G2
{0x58, 0x57}, // KA5857
};
const uint8_t SENSOR_DPI_TABLE[SENSOR_MAX][3] =
{
{0}, // UNKNOWN
- {0}, // PAW3205
+ {16, 63, 38}, // PAW3205
{16, 63, 38}, // PAW3212
{0}, // PAW3065
{0}, // PAW3065XY
static uint8_t sensor_read_byte(void)
{
uint8_t data;
+ // sensor_sdio_set_output();
+ // sensor_sdio_cpu_set();
+ // __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
sensor_sdio_set_input();
for (uint8_t i = 0; i < 8; i++)
{
static void sensor_write_byte(uint8_t data)
{
sensor_sdio_set_output();
+ // sensor_sdio_cpu_set();
+ // __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
for (uint8_t i = 0; i < 8; i++)
{
if (data & 0x80)
static void sensor_write_reg(uint8_t reg_addr, uint8_t data)
{
sensor_write_byte(reg_addr | 0x80);
+ co_delay_10us(1);
sensor_write_byte(data);
}
static void sensor_read_reg(uint8_t reg_addr, uint8_t* p_data)
{
sensor_write_byte(reg_addr);
+ co_delay_10us(1);
*p_data = sensor_read_byte();
}
************************************************************************************************************************/
void snesor_dpi_init(uint16_t dpi)
{
- sensor_write_reg(CPI_X_REG, dpi/SENSOR_DPI_TABLE[g_device_param.sensor_model][2]);
- sensor_write_reg(CPI_Y_REG, dpi/SENSOR_DPI_TABLE[g_device_param.sensor_model][2]);
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x09,0x5a); //Unlock WP
+
+ }
+
+ sensor_write_reg(CPI_X_REG,0x14);// dpi/SENSOR_DPI_TABLE[g_device_param.sensor_model][2]);
+ sensor_write_reg(CPI_Y_REG, 0xe3);//dpi/SENSOR_DPI_TABLE[g_device_param.sensor_model][2]);
+ uint8_t reg_val = 0;
+ sensor_read_reg(CPI_X_REG, ®_val);
+ LOG_INFO("[sensosor]snesor_dpi_init:[%02x]: 0x%x\r\n", CPI_X_REG,reg_val);
+ sensor_read_reg(CPI_Y_REG, ®_val);
+ LOG_INFO("[sensosor]snesor_dpi_init:[%02x]: 0x%x\r\n", CPI_Y_REG,reg_val);
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x09,0x00); //Lock WP
+ }
+
LOG_INFO("[sensosor]dpi set:%d\r\n", dpi);
#if 0
LOG_INFO("[sensosor]y dpi_tmp:%d\r\n", tmp*SENSOR_DPI_TABLE[g_device_param.sensor_model][2]);
#endif
}
-
+void reg_init(void)
+{
+ uint8_t reg_val = 0;
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x09,0x5a); //Unlock WP
+
+ sensor_write_reg(0x28,0xb4);
+ sensor_read_reg(0x28, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x28]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x29,0x46);
+ sensor_read_reg(0x29, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x29]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x2a,0x96);
+ sensor_read_reg(0x2a, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x2a]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x2b,0x8c);
+ sensor_read_reg(0x2b, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x2b]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x2c,0x6e);
+ sensor_read_reg(0x2c, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x2c]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x2d,0x64);
+ sensor_read_reg(0x2d, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x2d]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x38,0x5f);
+ sensor_read_reg(0x38, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x38]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x39,0x0f);
+ sensor_read_reg(0x39, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x39]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x3a,0x32);
+ sensor_read_reg(0x3a, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x3a]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x3b,0x47);
+ sensor_read_reg(0x3b, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x3b]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x42,0x10);
+ sensor_read_reg(0x42, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x42]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x54,0x2e);
+ sensor_read_reg(0x54, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x54]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x55,0xf2);
+ sensor_read_reg(0x55, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x55]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x61,0xf4);
+ sensor_read_reg(0x61, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x61]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x63,0x70);
+ sensor_read_reg(0x63, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x63]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x75,0x52);
+ sensor_read_reg(0x75, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x75]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x76,0x41);
+ sensor_read_reg(0x76, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x76]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x77,0xed);
+ sensor_read_reg(0x77, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x77]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x78,0x23);
+ sensor_read_reg(0x78, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x78]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x79,0x46);
+ sensor_read_reg(0x79, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x79]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x7a,0xe5);
+ sensor_read_reg(0x7a, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x7a]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x7c,0x48);
+ sensor_read_reg(0x7c, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x7c]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x7d,0x80);
+ sensor_read_reg(0x7d, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x7d]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x7e,0x77);
+ sensor_read_reg(0x7e, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x7e]: 0x%x\r\n", reg_val);
+ sensor_write_reg(0x1B,0x35);
+ // check reg value
+ sensor_read_reg(0x1B, ®_val);
+ LOG_INFO("[sensosor]reg_init:[0x1B]: 0x%x\r\n", reg_val);
+ // sensor_write_reg(0x7f,0x01);
+ // sensor_write_reg(0x0B,0x00);
+ // sensor_write_reg(0x7f,0x00);
+ sensor_write_byte(0xff);
+ sensor_write_byte(0x01);
+ sensor_write_reg(0x0B,0x00);
+ sensor_write_byte(0xff);
+ sensor_write_byte(0x00);
+
+ sensor_write_reg(0x09,0x00); //Lock WP
+ //sensor_poweron();
+ }
+
+}
/************************************************************************************************************************
* º¯ÊýÃû³Æ: sensor_init()
* ¹¦ÄÜ˵Ã÷: ³õʼ»¯sensor
sensor_sclk_cpu_set();
sensor_sdio_cpu_set();
- sensor_read_reg(PRODUCT_ID1_REG, &sensor_id1);
- sensor_read_reg(PRODUCT_ID2_REG, &sensor_id2);
- LOG_INFO("[sensosor]id1: 0x%02x, id2: 0x%02x\r\n", sensor_id1, sensor_id2);
-
- for (uint8_t i = 0; i < SENSOR_MAX; i++)
+
+
+ // if(g_device_param.sensor_model ==PAW3205)
+ // {
+ // sensor_write_reg(0x09,0x5a); //Unlock WP
+
+ // }
+ while(1)
{
- if (sensor_id1 == SENSOR_PID_TABLE[i][0] && sensor_id2 == SENSOR_PID_TABLE[i][1])
- {
- g_device_param.sensor_model = i;
- LOG_INFO("[sensosor]model: %s\r\n", sensor_type_str[g_device_param.sensor_model]);
- snesor_dpi_init(user_data.dpi);
- return 0;
- }
+
+ sensor_read_reg(PRODUCT_ID1_REG, &sensor_id1);
+ sensor_read_reg(PRODUCT_ID2_REG, &sensor_id2);
+ LOG_INFO("[sensosor]id1: 0x%02x, id2: 0x%02x\r\n", sensor_id1, sensor_id2);
+ for (uint8_t i = 0; i < SENSOR_MAX; i++)
+ {
+ if (sensor_id1 == SENSOR_PID_TABLE[i][0] && sensor_id2 == SENSOR_PID_TABLE[i][1])
+ {
+ g_device_param.sensor_model = i;
+ LOG_INFO("[sensosor]model: %s\r\n", sensor_type_str[g_device_param.sensor_model]);
+
+ // sensor_write_reg(0x26,0xb4);
+ // uint8_t data;
+ // sensor_read_reg(0x26, &data);
+ //LOG_INFO("[sensosor][0x26]: %02x\r\n", data);
+ //reg_init();
+ snesor_dpi_init(user_data.dpi);
+ sensor_poweron();
+ //while(1);
+ return 0;
+ }
+ }
+ sensor_sync_clk();
+ co_delay_10us(5);
+ LOG_INFO("[sensosor]type unknown!!!!\r\n");
+
}
+ //sensor_write_reg(0x09,0x00); //Lock WP
- LOG_INFO("[sensosor]type unknown!!!!\r\n");
- while(1);
+
}
/************************************************************************************************************************
* Êä ³ö: ÎÞ
* ×¢ÒâÊÂÏî: ÎÞ
************************************************************************************************************************/
+uint8_t SW_CPI; //CPI setting temp
+uint8_t CPI_MAX; //Max value of cpi[2:0]
+uint8_t CPI_Dft; //For THREE level CPI switch
+uint8_t CPI_Low;
+uint8_t CPI_Hi;
+uint8_t CPI_3200;
void sensor_poweron(void)
{
uint8_t reg_val = 0;
-
+
LOG_INFO("[sensosor]%s\r\n", __func__);
-
+ SW_CPI = 0x02; //1000 cpi
+ CPI_MAX = 0x04; //1600 cpi
+
+ CPI_Dft = SW_CPI; //For THREE level, Default CPI(1000)
+ CPI_Low = 0x01; //For THREE level, LOW CPI(800)
+ CPI_Hi = 0x04; //For THREE level, High CPI(1600)
+
+ CPI_3200= 0;
+
+ SW_CPI += 0x01;
+
+ #if 1 //THREE level CPI switch
+ if(SW_CPI > CPI_Hi)
+ SW_CPI = CPI_Low;
+ else if(SW_CPI > CPI_Dft)
+ SW_CPI = CPI_Hi;
+ else
+ SW_CPI = CPI_Dft;
+ #endif
+
+ if(SW_CPI > CPI_MAX)
+ {
+ SW_CPI = 0x00;
+ }
+ reg_val = SW_CPI;
sensor_gpio_cpu_init();
-
+ sensor_sclk_cpu_set();
+ sensor_sdio_cpu_set();
+ uint8_t data = 0;
+ sensor_read_reg(PRODUCT_ID1_REG,&data);
+ //co_delay_10us(1);
+ while( data != SENSOR_PID_TABLE[g_device_param.sensor_model][0])
+ {
+ sensor_read_reg(PRODUCT_ID1_REG,&data);
+ co_delay_10us(1);
+ LOG_INFO("[sensosor]sensor_poweron:read ID error:!!!\n");
+ sensor_sync_clk();
+ //resync();
+ }
+ co_delay_10us(5);
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x09,0x5a); //Unlock WP
+ }
for (uint8_t i = 0; i < 32; i++)
{
- reg_val = 0x17;
+ reg_val = 0x02;
LOG_INFO("[sensosor]cfg set reg_val: 0x%x\r\n", reg_val);
sensor_write_reg(CONFIGURATION_REG, reg_val);
co_delay_100us(10 * 3);
sensor_read_reg(CONFIGURATION_REG, ®_val);
LOG_INFO("[sensosor]cfg curr: 0x%x\r\n", reg_val);
- if (reg_val != 0x17)
+ if (reg_val != 0x02)
{
sensor_sync_clk();
}
break;
}
}
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x4B, 0x1B);
+ sensor_write_reg(0x09,0x00); //Lock WP
+ }
+
}
/************************************************************************************************************************
void sensor_powerdown(void)
{
uint8_t reg_val = 0;
-
+
LOG_INFO("[sensosor]%s\r\n", __func__);
sensor_gpio_cpu_init();
sensor_sclk_cpu_set();
sensor_sdio_cpu_clr();
-
+ SW_CPI = 0x02; //1000 cpi
+ CPI_MAX = 0x04; //1600 cpi
+
+ CPI_Dft = SW_CPI; //For THREE level, Default CPI(1000)
+ CPI_Low = 0x01; //For THREE level, LOW CPI(800)
+ CPI_Hi = 0x04; //For THREE level, High CPI(1600)
+
+ CPI_3200= 0;
+
+ SW_CPI += 0x01;
+
+ #if 1 //THREE level CPI switch
+ if(SW_CPI > CPI_Hi)
+ SW_CPI = CPI_Low;
+ else if(SW_CPI > CPI_Dft)
+ SW_CPI = CPI_Hi;
+ else
+ SW_CPI = CPI_Dft;
+ #endif
+
+ if(SW_CPI > CPI_MAX)
+ {
+ SW_CPI = 0x00;
+ }
+ reg_val = SW_CPI;
+ uint8_t data = 0;
+ sensor_read_reg(PRODUCT_ID1_REG,&data);
+ //co_delay_10us(1);
+ while( data != SENSOR_PID_TABLE[g_device_param.sensor_model][0])
+ {
+ sensor_read_reg(PRODUCT_ID1_REG,&data);
+ co_delay_10us(1);
+ LOG_INFO("[sensosor]sensor_powerdown:read ID error:!!!\n");
+ sensor_sync_clk();
+ //resync();
+ }
+ co_delay_10us(5);
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x09,0x5a); //Unlock WP
+ }
for (uint8_t i = 0; i < 32; i++)
{
sensor_read_reg(CONFIGURATION_REG, ®_val);
LOG_INFO("[sensosor]cfg prev reg_val: 0x%x\r\n", reg_val);
- reg_val = 0x1f;
+ reg_val = 0x0A;
LOG_INFO("[sensosor]cfg set reg_val: 0x%x\r\n", reg_val);
sensor_write_reg(CONFIGURATION_REG, reg_val);
sensor_read_reg(CONFIGURATION_REG, ®_val);
LOG_INFO("[sensosor]cfg curr reg_val: 0x%x\r\n", reg_val);
- if (reg_val != 0x1f)
+ if (reg_val != 0x0A)
{
sensor_sync_clk();
}
break;
}
}
+ if(g_device_param.sensor_model ==PAW3205)
+ {
+ sensor_write_reg(0x4B, 0x13);
+ sensor_write_reg(0x09,0x5a); //Unlock WP
+ }
}
+
/************************************************************************************************************************
* º¯ÊýÃû³Æ: sensor_get_motion()
* ¹¦ÄÜ˵Ã÷: »ñÈ¡sensorÒÆ¶¯
uint8_t sensor_get_motion(int8_t * p_x_delta, int8_t * p_y_delta)
{
#if 1
- uint8_t data = 0;
-
+ uint8_t data = 0,t_motion_x = 0,t_motion_y = 0;
+ static uint8_t motion_x = 0,motion_y = 0;
+
+ // if(g_device_param.sensor_model ==PAW3205)
+ // {
+ // sensor_write_reg(0x09,0x5a); //Unlock WP
+ // }
+
+
+ sensor_read_reg(PRODUCT_ID1_REG,&data);
+ //co_delay_10us(1);
+ while( data != SENSOR_PID_TABLE[g_device_param.sensor_model][0])
+ {
+ sensor_read_reg(PRODUCT_ID1_REG,&data);
+ co_delay_10us(1);
+ LOG_INFO("[sensosor]sensor_get_motion:read ID error:!!!\n");
+ sensor_sync_clk();
+ //resync();
+ }
+ //LOG_INFO("[sensosor]sensor_get_motion:read ID :0x%x ",data);
sensor_read_reg(MOTION_STATUS_REG, &data);
-
+ //LOG_INFO("[%02x]:0x%02x,",MOTION_STATUS_REG,data);
+ //LOG_INFO("[sensosor]sensor_get_motion: MOTION_STATUS_REG:0x%02x\n", data);
if (data & 0x80)
{
+ //LOG_INFO("[%02x]:0x%02x,",MOTION_STATUS_REG,data);
sensor_read_reg(DELTA_X_REG, &data);
+ //LOG_INFO("[%02x]:0x%02x,",DELTA_X_REG,data);
/* XÖá·½ÏòÑ¡Ôñ¼°Î¢µ÷ */
#if 0
- * p_x_delta = (data ^ 0xff) + 1;
+ t_motion_x = (data ^ 0xff) + 1;
#else
- *p_x_delta = -(data ^ 0xff) + 1;
+ t_motion_x = -(data ^ 0xff) + 1;
#endif
sensor_read_reg(DELTA_Y_REG, &data);
+ //LOG_INFO("[%02x]:0x%02x \n",DELTA_Y_REG,data);
/* YÖá·½ÏòÑ¡Ôñ¼°Î¢µ÷ */
#if 1
- * p_y_delta = (data ^ 0xff);
+ t_motion_y = (data ^ 0xff);
#else
- *p_y_delta = -(data ^ 0xff) - 1;
+ t_motion_y = -(data ^ 0xff) - 1;
#endif
-
+ if(motion_x == t_motion_x && motion_y == t_motion_y)
+ {
+ //LOG_INFO("[sensosor]sensor_get_motion:return1: x:%d,y:%d data:%d\n",t_motion_x, t_motion_y,data);
+ return 1;
+ }
+
+ motion_x = t_motion_x;
+ motion_y = t_motion_y;
+ *p_x_delta = t_motion_x;
+ *p_y_delta = t_motion_y;
+ //LOG_INFO("[sensosor]sensor_get_motion: x:%d,y:%d\n",motion_x, motion_y);
return 0;
}
* CONSTANTS (³£Á¿¶¨Òå)
*/
// User Definition
-#define UNKNOWN 0x00
-#define PAW3205 0x01
-#define PAW3212 0x02
-#define PAW3065 0x03
-#define PAW3065XY 0x04
-#define KA8 0x05
-#define KA8G2 0x06
-#define KA5857 0x07
-#define SENSOR_MAX 0x08
-
+// #define UNKNOWN 0x00
+// #define PAW3205 0x01
+// #define PAW3212 0x02
+// #define PAW3065 0x03
+// #define PAW3065XY 0x04
+// #define KA8 0x05
+// #define KA8G2 0x06
+// #define KA5857 0x07
+// #define SENSOR_MAX 0x08
+
+enum sensor_type {
+ sensor_UNKNOWN,
+ PAW3205,
+ PAW3212,
+ PAW3065,
+ PAW3065XY,
+ KA8,
+ KA8G2,
+ KA5857,
+ SENSOR_MAX,
+};
/*
* GLOBAL VARIABLES (È«¾Ö±äÁ¿)
*/
#include "os_timer.h"
#include "co_printf.h"
-
+#include "bizbus_common.h"
+#include "os_mem.h"
+#include "cJSON.h"
uint16_t user_task_id;
hid_mouse_param_t hid_mouse_param;
case USER_EVT_BLE_RX:
ble_rx_data_cope(param->param, param->param_len);
break;
-
+ case USER_EVT_ALIAPP_RX:
+ co_printf("\nUSER_EVT_ALIAPP_RX:%s\n",param->param);
+ co_printf("\nUSER_EVT_ALIAPP_RX:free_heap_size%d\n",os_get_free_heap_size());
+
+ bizbus_recv(param->param, param->param_len);
+ break;
case USER_EVT_ENTER_SLEEP:
g_device_param.is_enter_sleep = true;
sensor_powerdown();
USER_EVT_SENSOR_TX,
USER_EVT_QDEC_TX,
USER_EVT_BLE_RX,
+ USER_EVT_ALIAPP_RX,
USER_EVT_ENTER_SLEEP,
USER_EVT_EXIT_SLEEP,
};
-{"write_times": 0, "uart_baud": "921600", "uart_port": "COM23", "boot_mode": true}
\ No newline at end of file
+{"write_times": 104, "uart_baud": "921600", "boot_mode": true, "uart_port": "COM93"}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_guix.xsd">
- <SchemaVersion>-5.1</SchemaVersion>
+ <SchemaVersion>-6.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
+ <PrjGuiSettings>
+ <LastAddFilePath></LastAddFilePath>
+ </PrjGuiSettings>
+
<ViewPool/>
<SECTreeCtrl>
<View>
<WinId>38003</WinId>
<ViewName>Registers</ViewName>
- <TableColWidths>115 275</TableColWidths>
+ <TableColWidths>140 90</TableColWidths>
</View>
<View>
<WinId>346</WinId>
<ViewName>Code Coverage</ViewName>
- <TableColWidths>850 160</TableColWidths>
+ <TableColWidths>1010 160</TableColWidths>
</View>
<View>
<WinId>204</WinId>
<ViewName>Performance Analyzer</ViewName>
- <TableColWidths>1010</TableColWidths>
+ <TableColWidths>1170</TableColWidths>
</View>
</SECTreeCtrl>
<TreeListPane>
+ <View>
+ <WinId>35141</WinId>
+ <ViewName>Event Statistics</ViewName>
+ <UserString></UserString>
+ <TableColWidths>200 50 700</TableColWidths>
+ </View>
<View>
<WinId>1506</WinId>
<ViewName>Symbols</ViewName>
<UserString></UserString>
- <TableColWidths>133 133 133</TableColWidths>
+ <TableColWidths>80 80 80</TableColWidths>
</View>
<View>
<WinId>1936</WinId>
<ViewName>Watch 1</ViewName>
<UserString></UserString>
- <TableColWidths>133 133 133</TableColWidths>
+ <TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1937</WinId>
<ViewName>Watch 2</ViewName>
<UserString></UserString>
- <TableColWidths>133 133 133</TableColWidths>
+ <TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1935</WinId>
<ViewName>Call Stack + Locals</ViewName>
<UserString></UserString>
- <TableColWidths>133 133 133</TableColWidths>
+ <TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>2506</WinId>
<UserString></UserString>
<TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
</View>
+ <View>
+ <WinId>466</WinId>
+ <ViewName>Source Browser</ViewName>
+ <UserString>500</UserString>
+ <TableColWidths>300</TableColWidths>
+ </View>
</TreeListPane>
+ <CompViewPool/>
+
<WindowSettings>
<LogicAnalizer>
<ShowLACursor>1</ShowLACursor>
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
- <Top>222</Top>
- <Left>112</Left>
- <Right>1477</Right>
- <Bottom>1017</Bottom>
+ <Top>514</Top>
+ <Left>86</Left>
+ <Right>1585</Right>
+ <Bottom>1428</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
- <Len>304</Len>
- <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000067443A5C312E776F726B5C362ECAF3B1EA5C764D6F7573655C322E636F64655C312E73646B5C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C616C696F735C757061795F6C6974655C616C696F735F6170692E63000000000B616C696F735F6170692E63000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000000C0200004C010000BD05000079020000</Data>
+ <Len>60</Len>
+ <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>940100004F00000090050000DD000000</Data>
+ <Data>F40000004F00000090050000DD000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>4D0100004C02000049050000DA020000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000660000008D01000063010000</Data>
+ <Data>0300000066000000ED000000AD020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000660000008D01000063010000</Data>
+ <Data>0300000066000000ED000000AD020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000F40100002B030000</Data>
+ <Data>560000006D00000072010000A9020000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>000000002902000090050000B7020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D050000FF000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>97010000660000008D050000C4000000</Data>
+ <Data>F7000000660000008D050000C4000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000660000008D01000063010000</Data>
+ <Data>0300000066000000ED000000AD020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000F40100002B030000</Data>
+ <Data>560000006D00000072010000A9020000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000660000008D01000063010000</Data>
+ <Data>0300000066000000ED000000AD020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000F40100002B030000</Data>
+ <Data>560000006D00000072010000A9020000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>000000009401000045050000E1020000</Data>
+ <Data>00000000DE020000CB05000058030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000097010000C805000061020000</Data>
+ <Data>03000000E10200008D0500003F030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>97010000660000008D050000C4000000</Data>
+ <Data>F40000006300000090050000DD000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>97010000660000008D050000C4000000</Data>
+ <Data>F7000000660000008D050000C4000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A0040000630000009005000025020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>000000002902000090050000A3020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>97010000660000008D050000C4000000</Data>
+ <Data>F7000000660000008D050000C4000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>97010000660000008D050000C4000000</Data>
+ <Data>F7000000660000008D050000C4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000001E030000FB000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>35141</RegID>
+ <PaneID>35141</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>F40000006300000090050000DD000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>97010000660000008D050000C4000000</Data>
+ <Data>F7000000660000008D050000C4000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03040000660000008D0500000C020000</Data>
+ <Data>A3040000660000008D0500007A010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000660000008D0100007F020000</Data>
+ <Data>0300000066000000ED0000009E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000F40100002B030000</Data>
+ <Data>560000006D00000072010000A9020000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000097010000C805000061020000</Data>
+ <Data>00000000DE0200009005000058030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000A00300007D010000</Data>
+ <Data>560000006D0000001E030000FB000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000097010000C805000061020000</Data>
+ <Data>03000000E10200008D0500003F030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000F40100002B030000</Data>
+ <Data>560000006D00000072010000A9020000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000002C0200008D0500009E020000</Data>
+ <Data>030000002C0200008D0500008A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>D8000000EF000000680200007F020000</Data>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>463</RegID>
+ <PaneID>463</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000E10200008D0500003F030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D00000072010000A9020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>466</RegID>
+ <PaneID>466</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>03000000E10200008D0500003F030000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D00000072010000A9020000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>470</RegID>
+ <PaneID>470</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>F7000000660000008D050000C4000000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000001E030000FB000000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50000</RegID>
+ <PaneID>50000</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50001</RegID>
+ <PaneID>50001</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50002</RegID>
+ <PaneID>50002</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50003</RegID>
+ <PaneID>50003</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50004</RegID>
+ <PaneID>50004</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50005</RegID>
+ <PaneID>50005</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50006</RegID>
+ <PaneID>50006</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50007</RegID>
+ <PaneID>50007</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50008</RegID>
+ <PaneID>50008</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50009</RegID>
+ <PaneID>50009</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50010</RegID>
+ <PaneID>50010</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50011</RegID>
+ <PaneID>50011</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50012</RegID>
+ <PaneID>50012</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50013</RegID>
+ <PaneID>50013</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50014</RegID>
+ <PaneID>50014</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50015</RegID>
+ <PaneID>50015</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50016</RegID>
+ <PaneID>50016</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50017</RegID>
+ <PaneID>50017</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50018</RegID>
+ <PaneID>50018</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
+ <Window>
+ <RegID>50019</RegID>
+ <PaneID>50019</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>A3040000660000008D0500007A010000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
</RectRecentFloat>
</Window>
<Window>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
- <MRUWidth>940</MRUWidth>
+ <MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0000000000000000B70300001C000000</Data>
+ <Data>0000000000000000D10300001C000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>00000000E102000045050000F4020000</Data>
+ <Data>0000000058030000CB0500006B030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
- <MRUWidth>463</MRUWidth>
+ <MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>1</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>000000001C000000DA01000038000000</Data>
+ <Data>000000001C000000E701000038000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
- <MRUWidth>612</MRUWidth>
+ <MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>2</RecentRowIndex>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
+ <Window>
+ <RegID>824</RegID>
+ <PaneID>824</PaneID>
+ <IsVisible>0</IsVisible>
+ <IsFloating>0</IsFloating>
+ <IsTabbed>0</IsTabbed>
+ <IsActivated>0</IsActivated>
+ <MRUWidth>32767</MRUWidth>
+ <PinState>0</PinState>
+ <RecentFrameAlignment>4096</RecentFrameAlignment>
+ <RecentRowIndex>0</RecentRowIndex>
+ <RectRecentDocked>
+ <Len>16</Len>
+ <Data>030000002C0200008D0500008A020000</Data>
+ </RectRecentDocked>
+ <RectRecentFloat>
+ <Len>16</Len>
+ <Data>560000006D0000004601000036010000</Data>
+ </RectRecentFloat>
+ </Window>
<DockMan>
- <Len>2619</Len>
- <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000000000004D0100004C02000049050000DA020000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000B90300004C0200004905000022040000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F000000940100007C010000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000B9FFFFFF4C0200004901000095040000000000004F000000900100007C0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000B9FFFFFF1204000049050000B4040000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007C01000045050000800100000100000001000010040000000100000071FEFFFFF8000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000B9FFFFFF990400008405000093050000000000008001000045050000E10200000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+ <Len>3312</Len>
+ <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000560000006D0000001E030000FB000000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000560000006D0000004601000036010000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000C6020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000560000006D0000004601000036010000000000004F000000F0000000C60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000560000006D0000004601000036010000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000C6020000CB050000CA020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000560000006D0000001E030000FB00000000000000CA020000CB050000580300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan>
<ToolBar>
<RegID>59392</RegID>
<Name>File</Name>
<Buttons>
- <Len>2002</Len>
- <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
+ <Len>2951</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050000000000F696E7465726E616C5F6D616C6C6F639600000000000000140012646563696D616C5F706F696E745F7365656E0D75617274315F6973725F72616D0F696E7465726E616C5F6D616C6C6F630648415F42554618737065616B65725F676174745F6164645F736572766963650D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E69740B636F6E6669675F666C616717534C5F5343374132305F4932635F5370695F5772697465117472616E73706172656E745F73746172740D6170705F61745F726563765F630D75617274305F6973725F72616D0A756172745F706172616D15766353706F72744D6F74696F6E416C676F496E69741273656E645F6872735F646174615F666C61670D554152545F73656E645F62756616766353706F72744D6F74696F6E43616C63756C61746509636F5F7072696E74660D7274635F6765745F76616C75650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000</Data>
</Buttons>
<OriginalItems>
<Len>1423</Len>
<RegID>59399</RegID>
<Name>Build</Name>
<Buttons>
- <Len>692</Len>
- <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000F626C655F766F6963655F6D6F757365960000000000000001000F626C655F766F6963655F6D6F757365000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000</Data>
+ <Len>990</Len>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000F626C655F766F6963655F6D6F757365960000000000000001000F626C655F766F6963655F6D6F757365000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000</Data>
</Buttons>
<OriginalItems>
<Len>583</Len>
<RegID>59400</RegID>
<Name>Debug</Name>
<Buttons>
- <Len>2220</Len>
- <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+ <Len>2373</Len>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
</ToolBar>
<ControlBarsSummary>
<Bars>0</Bars>
- <ScreenCX>1707</ScreenCX>
- <ScreenCY>1067</ScreenCY>
+ <ScreenCX>1920</ScreenCX>
+ <ScreenCY>1080</ScreenCY>
</ControlBarsSummary>
</ViewEx>
</WinLayoutEx>
- <MDIGroups>
- <Orientation>1</Orientation>
- <ActiveMDIGroup>0</ActiveMDIGroup>
- <MDIGroup>
- <Size>100</Size>
- <ActiveTab>0</ActiveTab>
- <Doc>
- <Name>..\code\alios\upay_lite\alios_api.c</Name>
- <ColumnNumber>12</ColumnNumber>
- <TopLine>76</TopLine>
- <CurrentLine>86</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- </MDIGroup>
- </MDIGroups>
-
</ProjectGui>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
<nTsel>6</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\proj_main.c</PathWithFileName>
<FileNumber>2</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\config.h</PathWithFileName>
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\ble_simple_peripheral.c</PathWithFileName>
<FileNumber>4</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\ble_simple_peripheral.h</PathWithFileName>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\user_task.c</PathWithFileName>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\timer.c</PathWithFileName>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\gpio.c</PathWithFileName>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\keyscan.c</PathWithFileName>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\button.c</PathWithFileName>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\sensor.c</PathWithFileName>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\qdec.c</PathWithFileName>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\amic.c</PathWithFileName>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\app.c</PathWithFileName>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\led.c</PathWithFileName>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\inflash.c</PathWithFileName>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\func.c</PathWithFileName>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\code\adc.c</PathWithFileName>
<Group>
<GroupName>audio</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\audio_code_sbc\sbc.c</PathWithFileName>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\audio_code_sbc\sbc_primitives.c</PathWithFileName>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\audio_code_adpcm\adpcm.c</PathWithFileName>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\audio_encode\audio_encoder.c</PathWithFileName>
<Group>
<GroupName>profiles</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\profiles\ble_dev_info\dev_info_service.c</PathWithFileName>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\profiles\ble_simple_profile\simple_gatt_service.c</PathWithFileName>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\profiles\ble_hid\hid_service.c</PathWithFileName>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\profiles\ble_ota\ota_service.c</PathWithFileName>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\profiles\ble_ota\ota.c</PathWithFileName>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\profiles\ble_batt\batt_service.c</PathWithFileName>
<Group>
<GroupName>driver</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_pmu.c</PathWithFileName>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_keyscan.c</PathWithFileName>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_pmu_qdec.c</PathWithFileName>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_rtc.c</PathWithFileName>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_uart.c</PathWithFileName>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_wdt.c</PathWithFileName>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_i2s.c</PathWithFileName>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_exti.c</PathWithFileName>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_timer.c</PathWithFileName>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_iic.c</PathWithFileName>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_efuse.c</PathWithFileName>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_codec.c</PathWithFileName>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\driver\driver_adc.c</PathWithFileName>
<Group>
<GroupName>platform</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\platform\source\core_cm3_isr.c</PathWithFileName>
<FileNumber>42</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\platform\source\app_boot_vectors.s</PathWithFileName>
<Group>
<GroupName>patch</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<GroupNumber>6</GroupNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
- <tvExp>1</tvExp>
- <Focus>1</Focus>
+ <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\modules\patch\patch.c</PathWithFileName>
<Group>
<GroupName>lib</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<FileNumber>44</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
- <Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\components\ble\library\fr8010h_stack.lib</PathWithFileName>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>45</FileNumber>
- <FileType>4</FileType>
+ <FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\code\alios\upay_lite\upay_lite.lib</PathWithFileName>
- <FilenameWithoutPath>upay_lite.lib</FilenameWithoutPath>
+ <PathWithFileName>..\code\alios\upay_lite\alios_api.c</PathWithFileName>
+ <FilenameWithoutPath>alios_api.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<FileNumber>46</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
- <Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\code\alios\upay_lite\cJSON.lib</PathWithFileName>
- <FilenameWithoutPath>cJSON.lib</FilenameWithoutPath>
+ <PathWithFileName>..\code\alios\upay_lite\upay_lite.lib</PathWithFileName>
+ <FilenameWithoutPath>upay_lite.lib</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
+ </Group>
+
+ <Group>
+ <GroupName>cJSON</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
<File>
- <GroupNumber>8</GroupNumber>
+ <GroupNumber>9</GroupNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
- <Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\code\alios\upay_lite\alios_api.c</PathWithFileName>
- <FilenameWithoutPath>alios_api.c</FilenameWithoutPath>
+ <PathWithFileName>..\code\alios\upay_lite\cJSON\cJSON.c</PathWithFileName>
+ <FilenameWithoutPath>cJSON.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<TargetName>ble_voice_mouse</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <pArmCC>5060960::V5.06 update 7 (build 960)::ARMCC</pArmCC>
+ <pCCUsed>5060960::V5.06 update 7 (build 960)::ARMCC</pCCUsed>
+ <uAC6>8</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>ARMCM3</Device>
<Vendor>ARM</Vendor>
- <PackID>ARM.CMSIS.4.2.0</PackID>
+ <PackID>ARM.CMSIS.5.8.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(12000000) ESEL ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<UserProg2Name>fromelf --text -a -c -o "Output/@L.asm" "#L"</UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
- <SimDllArguments> -MPU</SimDllArguments>
+ <SimDllArguments> </SimDllArguments>
<SimDlgDll>DCM.DLL</SimDlgDll>
<SimDlgDllArguments>-pCM3</SimDlgDllArguments>
<TargetDllName>SARMCM3.DLL</TargetDllName>
- <TargetDllArguments> -MPU</TargetDllArguments>
+ <TargetDllArguments></TargetDllArguments>
<TargetDlgDll>TCM.DLL</TargetDlgDll>
<TargetDlgDllArguments>-pCM3</TargetDlgDllArguments>
</DllOption>
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>6</TargetSelection>
- <SimDlls>
- <CpuDll></CpuDll>
- <CpuDllArguments></CpuDllArguments>
- <PeripheralDll></PeripheralDll>
- <PeripheralDllArguments></PeripheralDllArguments>
- <InitializationFile></InitializationFile>
- </SimDlls>
- <TargetDlls>
- <CpuDll></CpuDll>
- <CpuDllArguments></CpuDllArguments>
- <PeripheralDll></PeripheralDll>
- <PeripheralDllArguments></PeripheralDllArguments>
- <InitializationFile></InitializationFile>
- <Driver>Segger\JL2CM3.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP>
+ <RvdsMve>0</RvdsMve>
+ <RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>1</StupSel>
<useUlib>1</useUlib>
<EndSel>1</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
- <IncludePath>..\..\..\..\components\ble\include;..\..\..\..\components\ble\include\gap;..\..\..\..\components\ble\include\gatt;..\..\..\..\components\driver\include;..\..\..\..\components\modules\os\include;..\..\..\..\components\modules\sys\include;..\..\..\..\components\modules\platform\include;..\..\..\..\components\modules\common\include;..\..\..\..\components\modules\lowpow\include;..\..\..\..\components\ble\profiles\ble_batt;..\..\..\..\components\ble\profiles\ble_dev_info;..\..\..\..\components\ble\profiles\ble_hid;..\..\..\..\components\ble\profiles\ble_ota;..\..\..\..\components\ble\profiles\ble_simple_profile;..\code;..\..\..\..\components\modules\audio_code_adpcm;..\..\..\..\components\modules\audio_code_sbc;..\..\..\..\components\modules\audio_encode;..\code\alios\upay_lite</IncludePath>
+ <IncludePath>..\..\..\..\components\ble\include;..\..\..\..\components\ble\include\gap;..\..\..\..\components\ble\include\gatt;..\..\..\..\components\driver\include;..\..\..\..\components\modules\os\include;..\..\..\..\components\modules\sys\include;..\..\..\..\components\modules\platform\include;..\..\..\..\components\modules\common\include;..\..\..\..\components\modules\lowpow\include;..\..\..\..\components\ble\profiles\ble_batt;..\..\..\..\components\ble\profiles\ble_dev_info;..\..\..\..\components\ble\profiles\ble_hid;..\..\..\..\components\ble\profiles\ble_ota;..\..\..\..\components\ble\profiles\ble_simple_profile;..\code;..\..\..\..\components\modules\audio_code_adpcm;..\..\..\..\components\modules\audio_code_sbc;..\..\..\..\components\modules\audio_encode;..\code\alios\upay_lite;..\code\alios\upay_lite\cJSON</IncludePath>
</VariousControls>
</Cads>
<Aads>
<NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc>
<useXO>0</useXO>
+ <ClangAsOpt>1</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<GroupName>alios</GroupName>
<Files>
<File>
- <FileName>upay_lite.lib</FileName>
- <FileType>4</FileType>
- <FilePath>..\code\alios\upay_lite\upay_lite.lib</FilePath>
+ <FileName>alios_api.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\code\alios\upay_lite\alios_api.c</FilePath>
</File>
<File>
- <FileName>cJSON.lib</FileName>
+ <FileName>upay_lite.lib</FileName>
<FileType>4</FileType>
- <FilePath>..\code\alios\upay_lite\cJSON.lib</FilePath>
+ <FilePath>..\code\alios\upay_lite\upay_lite.lib</FilePath>
</File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>cJSON</GroupName>
+ <Files>
<File>
- <FileName>alios_api.c</FileName>
+ <FileName>cJSON.c</FileName>
<FileType>1</FileType>
- <FilePath>..\code\alios\upay_lite\alios_api.c</FilePath>
+ <FilePath>..\code\alios\upay_lite\cJSON\cJSON.c</FilePath>
</File>
</Files>
</Group>
</Target>
</Targets>
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
</Project>
-;#<FEEDBACK># ARM Linker, 5050106: Last Updated: Wed Feb 28 17:24:20 2024
+;#<FEEDBACK># ARM Linker, 5060960: Last Updated: Mon Mar 11 11:32:51 2024
;VERSION 0.2
;FILE adc.o
__asm___5_adc_c_e3544fbe____REV16 <= USED 0
calib_lld_reset <= USED 0
calib_lld_send <= USED 0
calib_set_freq_config <= USED 0
+;FILE aes_decrypt.o
+;FILE aes_encrypt.o
+tc_aes128_set_encrypt_key <= USED 0
+tc_aes_encrypt <= USED 0
;FILE alios_api.o
ALIPAY_free <= USED 0
ALIPAY_malloc <= USED 0
ALIPAY_realloc <= USED 0
alipay_exec_env_init <= USED 0
-aos_free <= USED 0
-aos_idt_id2_pull_entry <= USED 0
-aos_idt_pk_cfg <= USED 0
-aos_kv_init <= USED 0
-aos_malloc <= USED 0
aos_printf <= USED 0
-bizbus_gtd_id2_init <= USED 0
-bizbus_gtd_wear_init <= USED 0
-bizbus_hal_recv <= USED 0
-bizbus_hal_send <= USED 0
-bizbus_recv_gtd_hdl <= USED 0
-bizbus_set_time <= USED 0
-hal_flash_id2_erase <= USED 0
-hal_flash_id2_read <= USED 0
-hal_flash_id2_write <= USED 0
is_need_to_request_cert <= USED 0
-upay_get_timestamp <= USED 0
-upay_id2_check_status <= USED 0
-upay_id2_init <= USED 0
;FILE amic.o
__asm___6_amic_c_fa3602f1____REV16 <= USED 0
__asm___6_amic_c_fa3602f1____REVSH <= USED 0
__asm___15_audio_encoder_c_f0e25b87____REV16 <= USED 0
__asm___15_audio_encoder_c_f0e25b87____REVSH <= USED 0
__asm___15_audio_encoder_c_f0e25b87____RRX <= USED 0
+;FILE base64.o
;FILE batt_service.o
batt_gatt_notify <= USED 0
batt_gatt_op_cmp_handler <= USED 0
+;FILE bizbus_base.o
+bizbus_unregister <= USED 0
+;FILE bizbus_fgs.o
+;FILE bizbus_flash.o
+HAL_GetProductKey <= USED 0
+HAL_SetDeviceName <= USED 0
+HAL_SetProductKey <= USED 0
+bizbus_register_dn_get <= USED 0
+bizbus_register_ds_get <= USED 0
+bizbus_register_pk_get <= USED 0
+;FILE bizbus_fnd.o
+bt_birdShield_get_authResult <= USED 0
;FILE ble_simple_peripheral.o
__asm___23_ble_simple_peripheral_c_4fde123a____REV16 <= USED 0
__asm___23_ble_simple_peripheral_c_4fde123a____REVSH <= USED 0
hid_consumer_value_send <= USED 0
;FILE button.o
button_deInit <= USED 0
+;FILE cbc_mode.o
+tc_cbc_mode_encrypt_modified <= USED 0
+;FILE cjson.o
+cJSON_AddArrayToObject <= USED 0
+cJSON_AddBoolToObject <= USED 0
+cJSON_AddFalseToObject <= USED 0
+cJSON_AddItemReferenceToArray <= USED 0
+cJSON_AddItemReferenceToObject <= USED 0
+cJSON_AddItemToArray <= USED 0
+cJSON_AddItemToObject <= USED 0
+cJSON_AddItemToObjectCS <= USED 0
+cJSON_AddNullToObject <= USED 0
+cJSON_AddNumberToObject <= USED 0
+cJSON_AddObjectToObject <= USED 0
+cJSON_AddRawToObject <= USED 0
+cJSON_AddTrueToObject <= USED 0
+cJSON_Compare <= USED 0
+cJSON_CreateArray <= USED 0
+cJSON_CreateArrayReference <= USED 0
+cJSON_CreateBool <= USED 0
+cJSON_CreateDoubleArray <= USED 0
+cJSON_CreateFalse <= USED 0
+cJSON_CreateFloatArray <= USED 0
+cJSON_CreateIntArray <= USED 0
+cJSON_CreateNull <= USED 0
+cJSON_CreateNumber <= USED 0
+cJSON_CreateObjectReference <= USED 0
+cJSON_CreateRaw <= USED 0
+cJSON_CreateStringArray <= USED 0
+cJSON_CreateStringReference <= USED 0
+cJSON_CreateTrue <= USED 0
+cJSON_DeleteItemFromArray <= USED 0
+cJSON_DeleteItemFromObject <= USED 0
+cJSON_DeleteItemFromObjectCaseSensitive <= USED 0
+cJSON_DetachItemFromArray <= USED 0
+cJSON_DetachItemFromObject <= USED 0
+cJSON_DetachItemFromObjectCaseSensitive <= USED 0
+cJSON_DetachItemViaPointer <= USED 0
+cJSON_Duplicate <= USED 0
+cJSON_GetArrayItem <= USED 0
+cJSON_GetArraySize <= USED 0
+cJSON_GetNumberValue <= USED 0
+cJSON_GetObjectItem <= USED 0
+cJSON_HasObjectItem <= USED 0
+cJSON_InsertItemInArray <= USED 0
+cJSON_IsArray <= USED 0
+cJSON_IsBool <= USED 0
+cJSON_IsFalse <= USED 0
+cJSON_IsInvalid <= USED 0
+cJSON_IsNull <= USED 0
+cJSON_IsNumber <= USED 0
+cJSON_IsObject <= USED 0
+cJSON_IsRaw <= USED 0
+cJSON_IsTrue <= USED 0
+cJSON_Minify <= USED 0
+cJSON_ParseWithLength <= USED 0
+cJSON_Print <= USED 0
+cJSON_PrintBuffered <= USED 0
+cJSON_PrintPreallocated <= USED 0
+cJSON_ReplaceItemInArray <= USED 0
+cJSON_ReplaceItemInObject <= USED 0
+cJSON_ReplaceItemInObjectCaseSensitive <= USED 0
+cJSON_ReplaceItemViaPointer <= USED 0
+cJSON_SetNumberHelper <= USED 0
+cJSON_SetValuestring <= USED 0
+cJSON_Version <= USED 0
+cJSON_malloc <= USED 0
;FILE core_cm3_isr.o
__asm___14_core_cm3_isr_c_5a2a0181____REV16 <= USED 0
__asm___14_core_cm3_isr_c_5a2a0181____REVSH <= USED 0
__asm___14_driver_efuse_c_9109bb6a____REV16 <= USED 0
__asm___14_driver_efuse_c_9109bb6a____REVSH <= USED 0
__asm___14_driver_efuse_c_9109bb6a____RRX <= USED 0
+efuse_get_chip_unique_id <= USED 0
efuse_get_chip_unique_id_new <= USED 0
efuse_write <= USED 0
;FILE driver_exti.o
__asm___7_entry_c_a06f3641____REVSH <= USED 0
__asm___7_entry_c_a06f3641____RRX <= USED 0
check_and_set_rand_seed <= USED 0
-get_SDK_compile_date_time <= USED 0
pmu_recalib_rc <= USED 0
;FILE flash.o
__asm___7_flash_c_48468d59____REV16 <= USED 0
flash_OTP_erase <= USED 0
flash_OTP_protect <= USED 0
flash_OTP_write <= USED 0
+flash_protect_disable <= USED 0
+flash_protect_enable <= USED 0
flash_protect_enable1 <= USED 0
flash_read_id <= USED 0
;FILE func.o
sbc_reinit <= USED 0
;FILE sbc_primitives.o
;FILE sensor.o
-__asm___8_sensor_c_c8adf411____REV16 <= USED 0
-__asm___8_sensor_c_c8adf411____REVSH <= USED 0
-__asm___8_sensor_c_c8adf411____RRX <= USED 0
+__asm___8_sensor_c_f4deda73____REV16 <= USED 0
+__asm___8_sensor_c_f4deda73____REVSH <= USED 0
+__asm___8_sensor_c_f4deda73____RRX <= USED 0
+reg_init <= USED 0
sensor_gpio_pmu_init <= USED 0
+;FILE sha1.o
+utils_sha1 <= USED 0
+utils_sha1_clone <= USED 0
+utils_sha1_free <= USED 0
;FILE simple_gatt_service.o
;FILE smpc.o
;FILE smpc_api.o
kalmanFilter <= USED 0
str_to_hex_arr <= USED 0
str_to_val <= USED 0
-system_get_curr_time <= USED 0
system_get_spare_exmem <= USED 0
system_optimize_power_consumption_set <= USED 0
system_power_off <= USED 0
ble_bond_clr_info <= USED 0
ble_bond_get_last_bond_idx <= USED 0
gatt_load_peer_svc_from_flash <= USED 0
+;FILE user_mem.o
+ke_free_user <= USED 0
+ke_get_mem_max_usage <= USED 0
+ke_malloc_user <= USED 0
+show_ke_malloc <= USED 0
+show_mem_list <= USED 0
+show_msg_list <= USED 0
;FILE user_task.o
__asm___11_user_task_c_b527fdeb____REV16 <= USED 0
__asm___11_user_task_c_b527fdeb____REVSH <= USED 0
__asm___11_user_task_c_b527fdeb____RRX <= USED 0
+;FILE utils.o
+_compare <= USED 0