#include "co_printf.h"
#include "driver_system.h"
+#include "inflash.h"
int amic_start_time = 0;
#define SBC_FRAME_SIZE 32
#define SBC_DATA_SIZE (SBC_FRAME_SIZE*4)
void amic_start(void)
{
+ if(user_data.activated_dtate != 1)//没激活停止录音
+ return;
if (amic_onoff == false)
{
co_printf("amic start.\r\n");
* LOCAL VARIABLES (±¾µØ±äÁ¿)
*/
static uint8_t m_conn_index = BLE_CONN_INDEX_INVALID;
- os_timer_t update_param_timer;
-
-/*
- * LOCAL FUNCTIONS (±¾µØº¯Êý)
- */
-
-/*
- * EXTERN FUNCTIONS (Íⲿº¯Êý)
- */
-
- /*
- * PUBLIC FUNCTIONS (È«¾Öº¯Êý)
- */
-
+os_timer_t update_param_timer;
+uint8_t ble_simple_link_rssi = 0;
+//¸üÐÂÐźÅÖµ
+void updata_ble_simple_link_rssi(void)
+{
+ if(m_conn_index != BLE_CONN_INDEX_INVALID)
+ {
+ gap_get_link_rssi(m_conn_index);//»ñÈ¡ÐźÅÇ¿¶È,ÔÚcase GAP_EVT_LINK_RSSI:»Øµ÷»Ø·µÖµ
+ }
+}
+//»ñÈ¡ÐźÅÖµ
+uint8_t get_ble_simple_link_rssi(void)
+{
+ return ble_simple_link_rssi;
+}
/** @function group ble peripheral device APIs (bleÍâÉèÏà¹ØµÄAPI)
* @{
*/
*/
void app_gap_evt_cb(gap_event_t *p_event)
{
+ char send_buf_t[50] = {0};
+ int send_buf_len_t = 0;
switch (p_event->type)
{
case GAP_EVT_ADV_END:
co_printf("slave[%d],connect. link_num:%d\r\n", p_event->param.slave_connect.conidx, gap_get_connect_num());
m_conn_index = p_event->param.slave_connect.conidx;
gatt_mtu_exchange_req(p_event->param.slave_connect.conidx);
+ gap_get_link_rssi(p_event->param.slave_connect.conidx);//»ñÈ¡ÐźÅÇ¿¶È
if (user_data.mouse_mode == WORK_2_4G_MODE)
{
os_timer_start(&update_param_timer, 1000, false);
case GAP_EVT_LINK_RSSI:
co_printf("link rssi %d\r\n", p_event->param.link_rssi);
+
+ send_buf_len_t = snprintf(send_buf_t,sizeof(send_buf_t),"{\"rssi\":\"%d\"}",p_event->param.link_rssi);
+ hid_cmd_send((unsigned char*)send_buf_t,send_buf_len_t);
break;
case GAP_SEC_EVT_SLAVE_ENCRYPT:
void ble_s_hid_data_tx(uint8_t * p_data, uint8_t len);
void hid_cmd_send(uint8_t *data, uint16_t len);
void hid_aliapp_data_tx(uint8_t * p_data, uint16_t len);
+//更新信号值
+void updata_ble_simple_link_rssi(void);
+//获取信号值
+uint8_t get_ble_simple_link_rssi(void);
#endif
void button_ticks()
{
Button *target;
-
+ //co_printf("button_ticks:button_ticks:%d,gpios_press_up_cnt:%d!!\r\n",button_ticks,gpios_press_up_cnt);
for (target = head_handle; target; target = target->next)
{
button_handler(target);
#define ENABLE 1
/* Óû§ÉèÖà */
-#define Version "v1.24.4.03"
+#define Version "v1.24.04.16"
#define Brand "VMouse"
#define DEVICE_MODEL 256
#define DEVICE_VERSION 0x01
-#define USER_URL "https://freqchip.com"
-#define USER_URL_LEN 20
+#define USER_URL "https://qx.5ai.top/"
+#define USER_URL_LEN 19
#define HW_VERSION "V1.0"
#define FW_VERSION "V1.0.109"
#define ADV_NAME_2_4G_PAIR_LEN 14
#define ADV_NAME_2_4G_PAIR "2.4G VMouse_P"
-#define UART_LOG_ENABLE ENABLE // ÓÉÓÚPA3¸´Ó㬴ò¿ªLOG¿ÉÄÜÔì³ÉijЩ¹¦ÄÜÊÜÏÞ
+#define BUTTON_UP DISABLE //°´¼ü»½Ðѹ¦ÄÜ£¬¹Ø±Õ¸üÊ¡¹¦ºÄ
+#define UART_LOG_ENABLE DISABLE // ÓÉÓÚPA3¸´Ó㬴ò¿ªLOG¿ÉÄÜÔì³ÉijЩ¹¦ÄÜÊÜÏÞ
#define WDT_ENABLE ENABLE // ¿´ÃŹ·
#define TEST_PIN_ENABLE DISABLE // PD6²âÊԹܽÅ
#define BAT_DETECT_TIMEOUT_PER_10SEC (6*10) // µç³ØµçÁ¿¼à²â¼ä¸ô
#define MOUSE_SLEEP_ENABLE ENABLE // ʹÄÜÊó±êÐÝÃß
-#define MOUSE_ADV_SLEEP_TIMEOUT_SEC (20) // Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
-#define MOUSE_CONN_SLEEP_TIMEOUT_SEC (4*60) // Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
-#define SENSOR_SLEEP_TIMEOUT_SEC (3) // Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
+#define MOUSE_ADV_SLEEP_TIMEOUT_SEC (20) // δÁ¬½ÓÊó±ê˯Ãßʱ¼ä£¬µ¥Î»S
+#define MOUSE_CONN_SLEEP_TIMEOUT_SEC (4*60) // ÒÑÁ¬½Ó£¬Êó±ê˯Ãßʱ¼ä£¬µ¥Î»S
+#define SENSOR_SLEEP_TIMEOUT_SEC (10) // ¹â±ê˯Ãßʱ¼ä£¬µ¥Î»S
/*
* TYPEDEFS (ÀàÐͶ¨Òå)
*/
#define BLE_BONDING_INFO_SAVE_ADDR 0x7D000
#define BLE_REMOTE_SERVICE_SAVE_ADDR 0x7E000
#define USER_FLASH_BASE_ADDR (0x7C000) //Óû§ÅäÖÃÇø 0x7c000-0x7D000
- #define ALI_DATA_ADDR 0x7B000 //°¢ÀïÅäÖÃÇø 0x7B000-0x7D000
+ #define USER_FLASH_SN_ADDR 0x7A000 //SN 0x7B000-0x7C000
+ #define ALI_DATA_ADDR 0x7B000 //°¢ÀïÅäÖÃÇø 0x7A000-0x7B000
#define FLASH_MAX_SIZE 0x80000
#endif // FOR_4M_FLASH
#include "ble_simple_peripheral.h"
#include "os_timer.h"
-
+#include "led.h"
#include "co_log.h"
#include "driver_wdt.h"
#undef LOG_LEVEL_MODULE
}
else if ((*curr_woke_mode == WORK_BT1_MODE) || (*curr_woke_mode == WORK_BT2_MODE))
{
- mac_addr_t local_addr;
- memcpy(local_addr.addr, user_data.bt_mac[*curr_woke_mode], MAC_ADDR_LEN);
- delete_bond_info_by_local_addr(local_addr);
+ // mac_addr_t local_addr;
+ // memcpy(local_addr.addr, user_data.bt_mac[*curr_woke_mode], MAC_ADDR_LEN);
+ // delete_bond_info_by_local_addr(local_addr);
+
+ // // 初始化所有通道的MAC地址
+ // user_data.peer_addr.addr[4] += 1;
+ // memcpy(local_addr.addr, user_data.peer_addr.addr, MAC_ADDR_LEN);
+ // memcpy(user_data.bt_mac[WORK_2_4G_MODE], local_addr.addr, MAC_ADDR_LEN);
+ // local_addr.addr[4] += 1;
+ // memcpy(user_data.bt_mac[WORK_BT1_MODE], local_addr.addr, MAC_ADDR_LEN);
+ // local_addr.addr[4] += 1;
+ // memcpy(user_data.bt_mac[WORK_BT2_MODE], local_addr.addr, MAC_ADDR_LEN);
- uint8_t max = MAX(user_data.bt_mac[WORK_BT1_MODE][4], user_data.bt_mac[WORK_BT2_MODE][4]);
- if (max == 0xff)
- user_data.bt_mac[*curr_woke_mode][4] = 0x01;
- else
- user_data.bt_mac[*curr_woke_mode][4] = max + 1;
- g_device_param.is_bt_pairing = true;
+ // g_device_param.is_bt_pairing = true;
- user_data_storage_do(true);
+ // user_data_storage_do(true);
}
-
+ work_mode_led_prestart(LED_FAST_BLINK_100MS);
if (curr_conn_index_get() == BLE_CONN_INDEX_INVALID)
gap_stop_advertising();
else
pmu_set_pin_to_PMU(MODE_DETECT_PIN_PORT, MODE_DETECT_BITS);
pmu_set_port_mux(MODE_DETECT_PIN_PORT, MODE_DETECT_BIT, PMU_PORT_MUX_GPIO);
pmu_set_pin_dir(MODE_DETECT_PIN_PORT, MODE_DETECT_BITS, GPIO_DIR_IN);
- pmu_set_pin_pull(MODE_DETECT_PIN_PORT, MODE_DETECT_BITS, true);
+ pmu_set_pin_pull(MODE_DETECT_PIN_PORT, MODE_DETECT_BITS, false);
pmu_set_pin_to_PMU(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BITS);
pmu_set_port_mux(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BIT, PMU_PORT_MUX_GPIO);
#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
#include "inflash.h"
#include "config.h"
#include "driver_flash.h"
void user_inflash_init(void)
{
user_data_param_t user_data_tmp;
-
device_setting_recover((uint8_t *)&user_data_tmp, sizeof(user_data_param_t));
LOG_INFO("[inflash]USR_MAC:%02X:%02X:%02X:%02X:%02X:%02X\r\n", user_data_tmp.peer_addr.addr[5], user_data_tmp.peer_addr.addr[4], user_data_tmp.peer_addr.addr[3], user_data_tmp.peer_addr.addr[2], user_data_tmp.peer_addr.addr[1], user_data_tmp.peer_addr.addr[0]);
user_data.activated_dtate = 0;
//strcpy(user_data.SN,"MSCL123456789");
user_data.mouse_mode = WORK_2_4G_MODE;
+ user_data.url_switch = 0;
}
+ user_data.url_switch = 1;//客户强行开
// if (user_data.mouse_mode == WORK_2_4G_MODE)
// {
// user_data_tmp.peer_addr.addr[4] += 1;
// {
// user_data_tmp.peer_addr.addr[4] += 2;
// }
- if ((user_data_tmp.peer_addr.addr[0] != 0xff) &&
- (user_data_tmp.peer_addr.addr[1] != 0xff) &&
- (user_data_tmp.peer_addr.addr[2] != 0xff) &&
- (user_data_tmp.peer_addr.addr[3] != 0xff) &&
- (user_data_tmp.peer_addr.addr[4] != 0xff) &&
- (user_data_tmp.peer_addr.addr[5] != 0xff))
- {
- // 初始化所有通道的MAC地址
- memcpy(user_data.bt_mac[WORK_2_4G_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
- user_data_tmp.peer_addr.addr[4] += 1;
- memcpy(user_data.bt_mac[WORK_BT1_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
- user_data_tmp.peer_addr.addr[4] += 1;
- memcpy(user_data.bt_mac[WORK_BT2_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
- }
- else
+ if ((user_data.peer_addr.addr[0] == 0xff) &&
+ (user_data.peer_addr.addr[1] == 0xff) &&
+ (user_data.peer_addr.addr[2] == 0xff) &&
+ (user_data.peer_addr.addr[3] == 0xff) &&
+ (user_data.peer_addr.addr[4] == 0xff) &&
+ (user_data.peer_addr.addr[5] == 0xff))
{
+ user_data.peer_addr.addr[5] = 0xC0;
user_data.peer_addr.addr[4] = 0x00;
+ user_data.peer_addr.addr[3] = 0x00;
+ user_data.peer_addr.addr[2] = 0x00;
+ user_data.peer_addr.addr[1] = 0x00;
+ user_data.peer_addr.addr[0] = 0xa5;
memcpy(user_data_tmp.peer_addr.addr, user_data.peer_addr.addr, MAC_ADDR_LEN);
memcpy(user_data.bt_mac[WORK_2_4G_MODE], user_data.peer_addr.addr, MAC_ADDR_LEN);
+ user_data_tmp.peer_addr.addr[4] += 20;
+ memcpy(user_data.bt_mac[WORK_BT1_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
user_data_tmp.peer_addr.addr[4] += 1;
+ memcpy(user_data.bt_mac[WORK_BT2_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
+ }else
+ {
+
+ unsigned int s_num = 0;
+ LOG_INFO("[inflash]user_data:MAC:%02X:%02X:%02X:%02X:%02X:%02X\r\n",
+ user_data.peer_addr.addr[5], user_data.peer_addr.addr[4], user_data.peer_addr.addr[3],
+ user_data.peer_addr.addr[2], user_data.peer_addr.addr[1], user_data.peer_addr.addr[0]);
+ //LOG_INFO("[inflash]user_data.flash_SN:%s\r\n",user_data.flash_SN);
+ memcpy(&s_num,user_data.peer_addr.addr,4);//获取MAC最后4字转化SN的生产年份,生产周期,产品流水号
+ char data_tmp[10] = {0};
+ snprintf(data_tmp,sizeof(data_tmp),"%08d",s_num);
+ LOG_INFO("[inflash]s_num:%s\r\n",data_tmp);
+ memcpy(user_data.SN,"MSCL",4);//固定码
+ user_data.SN[4] = user_data_tmp.peer_addr.addr[4];//批次
+ memcpy(&user_data.SN[5],"BKZ",3);//客户代码
+ memcpy(&user_data.SN[8],"12",2);//硬件版本
+ char *version = Version;
+ user_data.SN[10] = version[1];//软件版本
+ user_data.SN[11] = version[9];
+ user_data.SN[12] = version[10];
+ user_data.SN[13] = '0';//自制/委外
+ memcpy(&user_data.SN[14],data_tmp,8);//生产年份,生产周期,产品流水号
+ user_data.SN[22] = 0;
+ LOG_INFO("[inflash]user_data.SN:%s\r\n",user_data.SN);
+
+
+ // 初始化所有通道的MAC地址
+ memcpy(user_data_tmp.peer_addr.addr,user_data.peer_addr.addr,MAC_ADDR_LEN);
+ memcpy(user_data.bt_mac[WORK_2_4G_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
+ user_data_tmp.peer_addr.addr[4] += 20;
memcpy(user_data.bt_mac[WORK_BT1_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
user_data_tmp.peer_addr.addr[4] += 1;
memcpy(user_data.bt_mac[WORK_BT2_MODE], user_data_tmp.peer_addr.addr, MAC_ADDR_LEN);
}
+
+
memcpy(&MAC_addr,user_data.bt_mac[user_data.mouse_mode],sizeof(MAC_addr));
// 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_tmp.peer_addr);
+ // mac_addr_t peer_addr;
+ // memcpy(peer_addr.addr, user_data.bt_mac[user_data.mouse_mode], MAC_ADDR_LEN);
+
LOG_INFO("[inflash]==========user data==========\r\n");
- LOG_INFO("[inflash]dpi:%d\r\n", user_data.dpi);
+ LOG_INFO("[inflash]cpi:%d\r\n", user_data.cpi);
LOG_INFO("[inflash]mouse_mode:%d\r\n", user_data.mouse_mode);
LOG_INFO("[inflash]bt_mac[0]: %02X:%02X:%02X:%02X:%02X:%02X\r\n", user_data.bt_mac[WORK_2_4G_MODE][5], user_data.bt_mac[WORK_2_4G_MODE][4], user_data.bt_mac[WORK_2_4G_MODE][3], user_data.bt_mac[WORK_2_4G_MODE][2], user_data.bt_mac[WORK_2_4G_MODE][1], user_data.bt_mac[WORK_2_4G_MODE][0]);
LOG_INFO("[inflash]bt_mac[1]: %02X:%02X:%02X:%02X:%02X:%02X\r\n", user_data.bt_mac[WORK_BT1_MODE][5], user_data.bt_mac[WORK_BT1_MODE][4], user_data.bt_mac[WORK_BT1_MODE][3], user_data.bt_mac[WORK_BT1_MODE][2], user_data.bt_mac[WORK_BT1_MODE][1], user_data.bt_mac[WORK_BT1_MODE][0]);
LOG_INFO("=============================\r\n");
LOG_INFO("[inflash]MAC:%02X:%02X:%02X:%02X:%02X:%02X\r\n", MAC_addr.addr[5], MAC_addr.addr[4], MAC_addr.addr[3], MAC_addr.addr[2], MAC_addr.addr[1], MAC_addr.addr[0]);
LOG_INFO("[inflash]SN:%s\r\n",user_data.SN);
- LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data_tmp.mouse_mode);
- LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data_tmp.mouse_mode);
- LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data_tmp.mouse_mode);
- LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data_tmp.mouse_mode);
- LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data_tmp.mouse_mode);
+ LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data.mouse_mode);
+ LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data.mouse_mode);
+ LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data.mouse_mode);
+ LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data.mouse_mode);
+ LOG_INFO("[mouse_mode]:%d!!!!!!!!!!!!!!\r\n",user_data.mouse_mode);
}
* TYPEDEFS (ÀàÐͶ¨Òå)
*/
#pragma pack (4)
-
+#define SN_MAX_LEN 30
typedef struct
{
mac_addr_t peer_addr;
- char SN[30];
+ char SN[SN_MAX_LEN];
uint32_t reset_status;
uint16_t dpi;
uint16_t cpi;
void user_inflash_init(void);
void user_data_storage(void);
void user_data_storage_do(bool force);
-
+void inflash_write(uint32_t addr, uint8_t* p_buff, uint16_t len);
#endif /* __INFLASH_H */
Button_t left_button, middle_button, right_button, search_button, translate_button, \
voice_button, m_button, dpi_button, mode_button;
-static os_timer_t m_button_timer;
+static os_timer_t m_button_timer = {0};
static bool button_timer_status = false;
static volatile uint32_t button_press_status = 0;
button_timer_start();
}
-
+void user_keyscan_io_deinit(void)
+{
+ //return ;
+ keyscan_param_t param = {0};
+ keyscan_init(¶m);
+ pmu_port_wakeup_func_clear(MATRIX_COL0_PIN_GPIO);
+ pmu_port_wakeup_func_clear(MATRIX_COL1_PIN_GPIO);
+ pmu_port_wakeup_func_clear(MATRIX_COL2_PIN_GPIO);
+ pmu_port_wakeup_func_clear(MATRIX_ROW0_PIN_GPIO);
+ pmu_port_wakeup_func_clear(MATRIX_ROW1_PIN_GPIO);
+ pmu_port_wakeup_func_clear(MATRIX_ROW2_PIN_GPIO);
+ pmu_set_pin_pull(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BITS | MATRIX_ROW1_PIN_BITS | MATRIX_ROW2_PIN_BITS, false);
+ pmu_set_pin_pull(MATRIX_BUTTON_COL_PORT, MATRIX_COL0_PIN_BITS | MATRIX_COL1_PIN_BITS | MATRIX_COL2_PIN_BITS, false);
+
+
+// pmu_set_port_mux(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BIT , PMU_PORT_MUX_GPIO);
+// pmu_set_port_mux(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW1_PIN_BIT , PMU_PORT_MUX_GPIO);
+// pmu_set_port_mux(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW2_PIN_BIT, PMU_PORT_MUX_GPIO);
+// pmu_set_pin_to_PMU(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BITS | MATRIX_ROW1_PIN_BITS | MATRIX_ROW2_PIN_BITS);
+// pmu_set_pin_dir(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BITS | MATRIX_ROW1_PIN_BITS | MATRIX_ROW2_PIN_BITS, GPIO_DIR_OUT);
+// //pmu_set_pin_pull(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BITS | MATRIX_ROW1_PIN_BITS | MATRIX_ROW2_PIN_BITS, true);
+// pmu_set_gpio_value(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW0_PIN_BITS, 0);
+// pmu_set_gpio_value(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW1_PIN_BITS, 0);
+// pmu_set_gpio_value(MATRIX_BUTTON_ROW_PORT, MATRIX_ROW2_PIN_BITS, 0);
+
+// pmu_set_port_mux(MATRIX_BUTTON_COL_PORT, MATRIX_COL0_PIN_BIT , PMU_PORT_MUX_GPIO);
+// pmu_set_port_mux(MATRIX_BUTTON_COL_PORT, MATRIX_COL1_PIN_BIT , PMU_PORT_MUX_GPIO);
+// pmu_set_pin_to_PMU(MATRIX_BUTTON_COL_PORT, MATRIX_COL0_PIN_BITS | MATRIX_COL1_PIN_BITS );
+// pmu_set_pin_dir(MATRIX_BUTTON_COL_PORT, MATRIX_COL0_PIN_BITS | MATRIX_COL1_PIN_BITS , GPIO_DIR_IN);
+// //pmu_set_pin_pull(MATRIX_BUTTON_COL_PORT, MATRIX_COL0_PIN_BITS | MATRIX_COL1_PIN_BITS | MATRIX_COL2_PIN_BITS, false);
+// pmu_port_wakeup_func_set(MATRIX_COL0_PIN_GPIO);
+// pmu_port_wakeup_func_set(MATRIX_COL1_PIN_GPIO);
+// #if !UART_LOG_ENABLE
+// pmu_set_port_mux(MATRIX_BUTTON_COL_PORT, MATRIX_COL2_PIN_BIT, PMU_PORT_MUX_GPIO);
+// pmu_set_pin_to_PMU(MATRIX_BUTTON_COL_PORT, MATRIX_COL2_PIN_BITS);
+// pmu_set_pin_dir(MATRIX_BUTTON_COL_PORT, MATRIX_COL2_PIN_BITS, GPIO_DIR_IN);
+// //pmu_set_pin_pull(MATRIX_BUTTON_COL_PORT, MATRIX_COL2_PIN_BITS, false);
+// pmu_port_wakeup_func_set(MATRIX_COL2_PIN_GPIO);
+
+// #endif
+}
void user_keyscan_io_init(void)
{
keyscan_param_t param;
-
+ //pmu_port_wakeup_func_clear(MATRIX_COL0_PIN_GPIO);
+ //pmu_port_wakeup_func_clear(MATRIX_COL1_PIN_GPIO);
+
param.row_en = 0xb0; // PD4/PD5/PD7 as row
#if UART_LOG_ENABLE
param.col_en = 0x06; // PA1/PA2/PA3 as col
#else
+ //pmu_port_wakeup_func_clear(MATRIX_COL2_PIN_GPIO);
param.col_en = 0x0e; // PA1/PA2/PA3 as col
#endif
param.row_map_sel = 0x0;
m_button = button_init(&attr7);//M
dpi_button = button_init(&attr8);
mode_button = button_init(&attr9);
-
- os_timer_init(&m_button_timer, button_timer_handle, NULL);
+ if(m_button_timer.timer_id == 0)
+ os_timer_init(&m_button_timer, button_timer_handle, NULL);
co_printf("%s\r\n", __func__);
}
if (mode_long_press_cnt < 150)
{
mode_long_press_cnt++;
+ co_printf("[keyscan]mode_button mode_long_press_cnt:%d\r\n",mode_long_press_cnt);
if (mode_long_press_cnt == 150)
{
co_printf("[keyscan]mode_button LONG_PRESS_START\r\n");
void button_timer_stop(void);
void disconnect_button_handle(void);
uint8_t button_timer_status_get(void);
+void user_keyscan_io_deinit(void);
#endif /* __KEYSCAN_H */
} led_setting_param_t;
//static os_timer_t m_work_mode_led_timer;
-static os_timer_t m_lowbat_led_timer;
+static os_timer_t m_lowbat_led_timer = {0};
/*************************************************************************************
bat1_led
pmu_set_gpio_value(LED_PORT, MODE1_2_4G_LED_PIN_BITS, 0);
pmu_set_led1_value(0);
}
+ if(g_device_param.is_2_4g_pairing)//Æ¥Åäģʽ
+ {
+ //pmu_set_pin_dir(LED_PORT, MODE1_2_4G_LED_PIN_BITS, GPIO_DIR_OUT);
+ pmu_set_gpio_value(LED_PORT, MODE1_2_4G_LED_PIN_BITS, 1);
+ pmu_set_led1_value(1);
+ pmu_set_led2_value(1);
+ }
bat1_led_status = true;
}
else
//pmu_set_led1_value(0);
if (user_data.mouse_mode == WORK_2_4G_MODE)
{
- //pmu_set_pin_dir(LED_PORT, WORK_MODE_LED_PIN_BITS, GPIO_DIR_IN);
pmu_set_gpio_value(LED_PORT, MODE1_2_4G_LED_PIN_BITS, 0);
}
else if (user_data.mouse_mode == WORK_BT1_MODE)
pmu_set_led2_value(0);
}
-
+ if(g_device_param.is_2_4g_pairing)//Æ¥Åäģʽ
+ {
+ //pmu_set_pin_dir(LED_PORT, MODE1_2_4G_LED_PIN_BITS, GPIO_DIR_OUT);
+ pmu_set_gpio_value(LED_PORT, MODE1_2_4G_LED_PIN_BITS, 0);
+ pmu_set_led1_value(0);
+ pmu_set_led2_value(0);
+ }
bat1_led_status = false;
}
}
void lowbat_led_timer_start(void)
{
- os_timer_start(&m_lowbat_led_timer, 800, true);
+ os_timer_start(&m_lowbat_led_timer, 100, true);
}
void lowbat_led_timer_stop(void)
*************************************************************************************/
void bt2_bat3_led_set(bool status)
{
- // if (status)
- // {
- // pmu_set_pin_dir(LED_PORT, BT2_BAT3_LED_PIN_BITS, GPIO_DIR_OUT);
- // pmu_set_gpio_value(LED_PORT, BT2_BAT3_LED_PIN_BITS, 1);
- // }
- // else
- // {
- // pmu_set_pin_dir(LED_PORT, BT2_BAT3_LED_PIN_BITS, GPIO_DIR_IN);
- // }
+
}
/*************************************************************************************
void work_mode_led_off(void)
{
- // if (user_data.mouse_mode == WORK_2_4G_MODE)
- // {
- // pmu_set_pin_dir(LED_PORT, WORK_MODE_LED_PIN_BITS, GPIO_DIR_IN);
- // //co_printf("work_mode_led_off:WORK_2_4G_MODE\n");
- // }
- // else if (user_data.mouse_mode == WORK_BT1_MODE)
- // {
- // pmu_set_led1_value(0);
- // //co_printf("work_mode_led_off:WORK_BT1_MODE\n");
- // //pmu_set_gpio_value(LED_PORT, WORK_MODE_LED_PIN_BITS, 1);
- // }else if (user_data.mouse_mode == WORK_BT2_MODE)
- // {
- // pmu_set_led2_value(0);
- // //co_printf("work_mode_led_off:WORK_BT2_MODE\n");
- // //pmu_set_gpio_value(LED_PORT, WORK_MODE_LED_PIN_BITS, 1);
- // }
+
}
void work_mode_led_on(void)
{
- // pmu_set_pin_dir(LED_PORT, WORK_MODE_LED_PIN_BITS, GPIO_DIR_OUT);
- // if (user_data.mouse_mode == WORK_2_4G_MODE)
- // {
- // //pmu_set_gpio_value(LED_PORT, WORK_MODE_LED_PIN_BITS, 0);
- // pmu_set_pin_dir(LED_PORT, MODE1_2_4G_LED_PIN_BITS, GPIO_DIR_OUT);
- // pmu_set_gpio_value(LED_PORT, MODE1_2_4G_LED_PIN_BITS, 1);
- // //co_printf("work_mode_led_on:WORK_2_4G_MODE\n");
- // }
- // else if (user_data.mouse_mode == WORK_BT1_MODE)
- // {
- // pmu_set_led1_value(1);
- // //co_printf("work_mode_led_on:WORK_BT1_MODE\n");
- // //pmu_set_gpio_value(LED_PORT, WORK_MODE_LED_PIN_BITS, 1);
- // }else if (user_data.mouse_mode == WORK_BT2_MODE)
- // {
- // //co_printf("work_mode_led_on:WORK_BT2_MODE\n");
- // pmu_set_led2_value(1);
- // //pmu_set_gpio_value(LED_PORT, WORK_MODE_LED_PIN_BITS, 1);
- // }
+
}
-// static void work_mode_timer_handle(void *arg)
-// {
-
-// // if (on_time_count < work_mode_led_setting.on_time_target)
-// // {
-// // on_time_count++;
-// // if (on_time_count == work_mode_led_setting.on_time_target)
-// // {
-// // work_mode_led_off();
-
-// // if (work_mode_led_setting.repeat > 0) // ÖØ¸´´ÎÊý
-// // {
-// // work_mode_led_setting.repeat--;
-// // off_time_target = 0;
-// // }
-
-// // if (work_mode_led_setting.repeat == 0) // ϨµÆ
-// // {
-// // on_time_count = 0;
-// // off_time_target = 0;
-
-// // work_mode_led_off();
-// // os_timer_stop(&m_work_mode_led_timer);
-// // }
-// // }
-// // }
-// // else if (off_time_target < work_mode_led_setting.off_time_target)
-// // {
-// // off_time_target++;
-// // if (off_time_target == work_mode_led_setting.off_time_target)
-// // {
-// // work_mode_led_on();
-// // on_time_count = 0;
-// // }
-// // }
-// }
-
void work_mode_led_prestart(uint8_t mode)
{
// os_timer_stop(&m_work_mode_led_timer);
void user_led_io_init(void)
{
- pmu_set_port_mux(LED_PORT, WORK_MODE_LED_PIN_BIT, PMU_PORT_MUX_GPIO);
+ pmu_set_port_mux(LED_PORT, WORK_LOGO_LED_PIN_BIT, PMU_PORT_MUX_GPIO);
pmu_set_port_mux(LED_PORT, BT2_BAT3_LED_PIN_BIT, PMU_PORT_MUX_GPIO);
- pmu_set_pin_to_PMU(LED_PORT, WORK_MODE_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS);
- pmu_set_pin_dir(LED_PORT, WORK_MODE_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS, GPIO_DIR_IN);
- pmu_set_pin_pull(LED_PORT, WORK_MODE_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS, false);
+ pmu_set_pin_to_PMU(LED_PORT, WORK_LOGO_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS);
+ pmu_set_pin_dir(LED_PORT, WORK_LOGO_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS, GPIO_DIR_IN);
+ pmu_set_pin_pull(LED_PORT, WORK_LOGO_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS, false);
+ pmu_set_pin_dir(LED_PORT, WORK_LOGO_LED_PIN_BITS, GPIO_DIR_OUT);
+ pmu_set_gpio_value(LED_PORT, WORK_LOGO_LED_PIN_BITS, 1);
+
}
void user_led_io_deinit(void)
bat1_led_set(false);
bat2_led_set(false);
bt2_bat3_led_set(false);
+ pmu_set_pin_dir(LED_PORT, WORK_LOGO_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS, GPIO_DIR_IN);
+ pmu_set_pin_pull(LED_PORT, WORK_LOGO_LED_PIN_BITS | BT2_BAT3_LED_PIN_BITS, false);
//os_timer_stop(&m_work_mode_led_timer);
os_timer_stop(&m_lowbat_led_timer);
}
void user_led_init(void)
{
+
user_led_io_init();
bat1_led_set(false);
// co_printf("%s\r\n", __func__);
//while(1);
//os_timer_init(&m_work_mode_led_timer, work_mode_timer_handle, NULL);
- os_timer_init(&m_lowbat_led_timer, lowbat_led_timer_handle, NULL);
+ if(m_lowbat_led_timer.timer_id == 0)
+ os_timer_init(&m_lowbat_led_timer, lowbat_led_timer_handle, NULL);
work_mode_led_prestart(LED_FAST_BLINK_100MS);
- lowbat_led_timer_start();
+ //lowbat_led_timer_start();
co_printf("%s\r\n", __func__);
}
*/
#define LED_PORT GPIO_PORT_A
-#define WORK_MODE_LED_PIN_BIT GPIO_BIT_4
-#define WORK_MODE_LED_PIN_BITS BIT(4)
+#define WORK_LOGO_LED_PIN_BIT GPIO_BIT_4
+#define WORK_LOGO_LED_PIN_BITS BIT(4)
#define BT2_BAT3_LED_PIN_BIT GPIO_BIT_5
#define BT2_BAT3_LED_PIN_BITS BIT(5)
{
uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
ool_write32(PMU_REG_PORTA_LAST, gpio_value);
- //co_printf("gpio_value:%08x\r\n", gpio_value);
+ co_printf("gpio_value:%08x\r\n", gpio_value);
+ #if BUTTON_UP
if (g_device_param.is_enter_sleep == true)
{
if ((gpio_value & MATRIX_COL0_PIN_GPIO) == 0 ||
}
}
-
+ #endif
if ((gpio_value & SENSOR_MOTSWK_PIN) == 0)
{
if (g_device_param.is_enter_sleep == true)
//flash_read(ALI_DATA_ADDR,sizeof(data),(uint8_t *)data);
co_printf("\r\ndata:%s\r\n",data);
#endif
- pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_2_1);
- //pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_2_9);
+ pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_2_5);
+ //pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_2_7);
user_inflash_init();
cJSON_InitHooks(NULL);//40
user_timer_init();
audio_encoder_init(ENCODE_TYPE_SBC);//70
battery_voltage_get();//70
- user_keyscan_init();//160UA
+ user_keyscan_init();//功耗高
#if WDT_ENABLE
wdt_init(WDT_ACT_CALL_IRQ, 10);
wdt_start();
{0x30, 0xD1,0xFE}, // PAW3205_3T
{0x31, 0x00,0xFE}, // PAW3205_NT
{0x30, 0x02,0xFE}, // PAW3212
- {0x30, 0x02,0xA7}, // SG8925
+ {0x30, 0x02,0xC0}, // SG8925
{0x30, 0x5A,0xC2}, // SG8670
{0x31, 0x04,0xFE}, // PAW3065
{0xFE,0xFE,0xFE}, // PAW3065XY
{600, 800, 1000,1300,1600}, // PAW3205_3T
{600, 800, 1000,1300,1600}, // PAW3205_NT
{600, 800, 1000,1300,1600}, // PAW3212
- {800,1000, 1200, 1600,2400}, // SG8925
+ {800,1600, 2400, 3200,4000}, // SG8925
{800,1000, 1200, 1600,2400}, // SG8670
{600, 800, 1000,1300,1600}, // PAW3065
{600, 800, 1000,1300,1600}, // PAW3065XY
sensor_write_reg(0x4D,0x00);
sensor_write_reg(0x4E,0x02);
sensor_write_reg(0x7E,0x00);
+ }else if(g_device_param.sensor_model == SG8925 )
+ {
+ sensor_write_reg(0x7f,0xA7);
+ sensor_write_reg(0x09,0x5a);
+ sensor_write_reg(0x20,0xf0);
+ sensor_write_reg(0x21,0x10);
+ sensor_write_reg(0x2d,0x64);
+ sensor_write_reg(0x2b,0x01);
+ sensor_write_reg(0x57,0x08);
+ sensor_write_reg(0x1b,0x5d);
+ sensor_write_reg(0x1c,0x34);
+ sensor_write_reg(0x1f,0x33);
+ sensor_write_reg(0x35,0xc1);
+ sensor_write_reg(0x34,0x4e);
+ sensor_write_reg(0x24,0xff);
+ sensor_write_reg(0x7f,0x00);
+ sensor_write_reg(0x09,0x00);
}
}
#include "cJSON.h"
#include "adc.h"
#include "inflash.h"
+#include "flash_usage_config.h"
uint16_t user_task_id;
//字符串里查找最近一个c字符,返回偏移位置
unsigned int find_c(char *data,char c)
str_tmp = strstr(cmd_str_tmp,"\"get_MAC\"");
if(str_tmp)
{
- send_buf_len = snprintf(send_buf,SEND_BUF_MAX_LEN,"{\"MAC\":\"%02X:%02X:%02X:%02X:%02X:%02X\"}",
- user_data.peer_addr.addr[0],user_data.peer_addr.addr[1],user_data.peer_addr.addr[2],
- user_data.peer_addr.addr[3],user_data.peer_addr.addr[4],user_data.peer_addr.addr[5]);
+ send_buf_len = snprintf(send_buf,SEND_BUF_MAX_LEN,"{\"MAC\":\"%02X%02X%02X%02X%02X%02X\"}",
+ user_data.peer_addr.addr[5],user_data.peer_addr.addr[4],user_data.peer_addr.addr[3],
+ user_data.peer_addr.addr[2],user_data.peer_addr.addr[1],user_data.peer_addr.addr[0]);
hid_cmd_send((unsigned char*)send_buf,send_buf_len);
ret = 1;
}
+ str_tmp = strstr(cmd_str_tmp,"\"get_rssi\"");
+ if(str_tmp)
+ {
+ updata_ble_simple_link_rssi();//更新信号,在case GAP_EVT_LINK_RSSI:回调回返值
+
+ ret = 1;
+ }
str_tmp = strstr(cmd_str_tmp,"\"set_CPI\":\"");
if(str_tmp)
{
num_buf_len = 10;
memcpy(send_buf,str_tmp,num_buf_len);
send_buf[num_buf_len] = 0;
- user_data.activated_dtate = atoi(send_buf);
+ uint8_t activated_dtate_tmp = atoi(send_buf);
+ if(user_data.activated_dtate != activated_dtate_tmp)
+ {
+ user_data.activated_dtate = activated_dtate_tmp;
+ user_data_storage_do(true);
+ }
send_buf_len = snprintf(send_buf,SEND_BUF_MAX_LEN,"{\"set_config\":\"1\"}");
hid_cmd_send((unsigned char*)send_buf,send_buf_len);
- user_data_storage_do(true);
+
co_printf("set_activated_dtate:%d\r\n",user_data.activated_dtate);
ret = 1;
}
os_free(send_buf);
return ret;
}
-extern os_timer_t update_param_timer;
+
static int user_task_func(os_event_t *param)
{
switch (param->event_id)
case USER_EVT_ENTER_SLEEP:
g_device_param.is_enter_sleep = true;
+ #if !BUTTON_UP
+ user_keyscan_io_deinit();
+ #endif
//sensor_powerdown();
user_led_io_deinit();
user_qdec_deinit();
hid_mouse_timer_stop();
os_timer_stop(&m_task_1s_timer);
os_timer_stop(&m_task_10s_timer);
- bat1_led_set(false);
- bat2_led_set(false);
- bt2_bat3_led_set(false);
lowbat_led_timer_stop();
button_timer_stop();
#if WDT_ENABLE
gap_stop_advertising();
else
gap_disconnect_req(curr_conn_index_get());
+
//pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_2_1);
co_printf("enter sleep!!\r\n");
system_sleep_enable();
case USER_EVT_EXIT_SLEEP:
// co_printf("exit sleep!!\r\n");
//pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_2_9);
+ #if !BUTTON_UP
+ user_keyscan_io_init();
+ #endif
sensor_gpio_cpu_init();
hid_mouse_timer_start();
g_device_param.is_enter_sleep = false;
- work_mode_led_prestart(LED_FAST_BLINK_100MS);
adv_sleep_cnt_reset();
user_led_init();
battery_voltage_get();
- user_keyscan_io_init();
user_qdec_init();
//sensor_poweron();
os_timer_start(&m_task_1s_timer, 1000, true);
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
- <Top>31</Top>
- <Left>580</Left>
- <Right>1855</Right>
- <Bottom>704</Bottom>
+ <Top>300</Top>
+ <Left>848</Left>
+ <Right>2123</Right>
+ <Bottom>1028</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
- <Len>1434</Len>
- <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A000000090000000100000060483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C696E666C6173682E680000000009696E666C6173682E6800000000C5D4F200FFFFFFFF72483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C616C696F735C757061795F6C6974655C616C696F735F6170692E63000000000B616C696F735F6170692E6300000000FFDC7800FFFFFFFF6E483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C626C655F73696D706C655F7065726970686572616C2E630000000017626C655F73696D706C655F7065726970686572616C2E6300000000BECEA100FFFFFFFF62483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C757365725F7461736B2E63000000000B757365725F7461736B2E6300000000F0A0A100FFFFFFFF60483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C6B65797363616E2E6300000000096B65797363616E2E6300000000BCA8E100FFFFFFFF5E483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C74696D65722E63000000000774696D65722E63000000009CC1B600FFFFFFFF60483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C696E666C6173682E630000000009696E666C6173682E6300000000F7B88600FFFFFFFF5C483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C6C65642E6300000000056C65642E6300000000D9ADC200FFFFFFFF5F483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C73656E736F722E63000000000873656E736F722E6300000000A5C2D700FFFFFFFF5D483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C616D69632E630000000006616D69632E6300000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000400300008D0000003707000010020000</Data>
+ <Len>422</Len>
+ <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000062483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C757365725F7461736B2E63000000000B757365725F7461736B2E6300000000C5D4F200FFFFFFFF60483A5C312E776F726B5C362EB8BBC8F0C0A45C312ECAF3B1EA5C764D6F7573655C322E636F64655C312E6D6F7573655C6578616D706C65735C6E6F6E655F65766D5C626C655F766F6963655F6D6F7573655C636F64655C696E666C6173682E630000000009696E666C6173682E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004C0400009A0100004308000054030000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>C5020000D70000006107000065010000</Data>
+ <Data>1E0300001B010000BA070000A9010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000066000000ED000000B9010000</Data>
+ <Data>0300000066000000ED000000F0010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000066000000ED000000B9010000</Data>
+ <Data>0300000066000000ED000000F0010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000066000000ED000000B9010000</Data>
+ <Data>0300000066000000ED000000F0010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000066000000ED000000B9010000</Data>
+ <Data>0300000066000000ED000000F0010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>00000000EA010000EB04000067020000</Data>
+ <Data>0000000021020000EB0400009E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000ED010000E80400004E020000</Data>
+ <Data>0300000024020000E804000085020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0300000066000000ED000000B9010000</Data>
+ <Data>0300000066000000ED000000F0010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000ED010000E80400004E020000</Data>
+ <Data>0300000024020000E804000085020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000ED010000E80400004E020000</Data>
+ <Data>0300000024020000E804000085020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000ED010000E80400004E020000</Data>
+ <Data>0300000024020000E804000085020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>03000000ED010000E80400004E020000</Data>
+ <Data>0300000024020000E804000085020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0000000067020000EB0400007A020000</Data>
+ <Data>000000009E020000EB040000B1020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
</Window>
<DockMan>
<Len>3312</Len>
- <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C5020000D70000006107000065010000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000071060000D700000061070000AD020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000D2010000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000D1010000D7000000C10200005A020000000000004F000000F0000000D20100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000D10100009D020000610700003F030000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000D2010000EB040000D6010000010000000100001004000000010000009CFDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000D10100005E020000BC060000EF02000000000000D6010000EB040000670200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+ <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000001E0300001B010000BA070000A9010000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000CA0600001B010000BA070000F1020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000009020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000002A0200001B0100001A030000D5020000000000004F000000F0000000090200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000002A020000E1020000BA07000083030000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000009020000EB0400000D020000010000000100001004000000010000009CFDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002A020000D9020000150700006A030000000000000D020000EB0400009E0200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan>
<ToolBar>
<RegID>59392</RegID>
<Name>Build</Name>
<Buttons>
<Len>990</Len>
- <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000F626C655F766F6963655F6D6F757365960000000000000001000F626C655F766F6963655F6D6F757365000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
+ <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000F626C655F766F6963655F6D6F757365960000000000000001000F626C655F766F6963655F6D6F757365000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
</Buttons>
<OriginalItems>
<Len>583</Len>
<Name>Debug</Name>
<Buttons>
<Len>2373</Len>
- <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
- <ActiveTab>9</ActiveTab>
- <Doc>
- <Name>..\code\inflash.h</Name>
- <ColumnNumber>31</ColumnNumber>
- <TopLine>28</TopLine>
- <CurrentLine>44</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\alios\upay_lite\alios_api.c</Name>
- <ColumnNumber>55</ColumnNumber>
- <TopLine>84</TopLine>
- <CurrentLine>97</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\ble_simple_peripheral.c</Name>
- <ColumnNumber>17</ColumnNumber>
- <TopLine>275</TopLine>
- <CurrentLine>294</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
+ <ActiveTab>1</ActiveTab>
<Doc>
<Name>..\code\user_task.c</Name>
- <ColumnNumber>49</ColumnNumber>
- <TopLine>70</TopLine>
- <CurrentLine>84</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\keyscan.c</Name>
- <ColumnNumber>31</ColumnNumber>
- <TopLine>270</TopLine>
- <CurrentLine>288</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\timer.c</Name>
- <ColumnNumber>20</ColumnNumber>
- <TopLine>1</TopLine>
- <CurrentLine>16</CurrentLine>
+ <ColumnNumber>37</ColumnNumber>
+ <TopLine>158</TopLine>
+ <CurrentLine>179</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\code\inflash.c</Name>
- <ColumnNumber>0</ColumnNumber>
- <TopLine>1</TopLine>
- <CurrentLine>2</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\led.c</Name>
- <ColumnNumber>0</ColumnNumber>
- <TopLine>42</TopLine>
- <CurrentLine>61</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\sensor.c</Name>
- <ColumnNumber>61</ColumnNumber>
- <TopLine>708</TopLine>
- <CurrentLine>720</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
- <Doc>
- <Name>..\code\amic.c</Name>
- <ColumnNumber>0</ColumnNumber>
- <TopLine>64</TopLine>
- <CurrentLine>83</CurrentLine>
+ <ColumnNumber>9</ColumnNumber>
+ <TopLine>96</TopLine>
+ <CurrentLine>118</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
-;#<FEEDBACK># ARM Linker, 5060960: Last Updated: Sun Apr 07 17:31:42 2024
+;#<FEEDBACK># ARM Linker, 5060960: Last Updated: Fri Apr 26 10:08:50 2024
;VERSION 0.2
;FILE adc.o
__asm___5_adc_c_e3544fbe____REV16 <= 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
-__asm___23_ble_simple_peripheral_c_4fde123a____RRX <= USED 0
+__asm___23_ble_simple_peripheral_c_38fcf5c7____REV16 <= USED 0
+__asm___23_ble_simple_peripheral_c_38fcf5c7____REVSH <= USED 0
+__asm___23_ble_simple_peripheral_c_38fcf5c7____RRX <= USED 0
ble_send_debug <= USED 0
+get_ble_simple_link_rssi <= USED 0
hid_consumer_value_send <= USED 0
;FILE button.o
button_deInit <= USED 0
flash_protect_enable1 <= USED 0
flash_read_id <= USED 0
;FILE func.o
+__asm___6_func_c_bf388994____REV16 <= USED 0
+__asm___6_func_c_bf388994____REVSH <= USED 0
+__asm___6_func_c_bf388994____RRX <= USED 0
+delete_bond_info_by_local_addr <= USED 0
find_bond_info_by_local_addr <= USED 0
mouse_exit_pairing <= USED 0
;FILE gap_api.o
gap_bond_manager_add_info <= USED 0
gap_bond_manager_delete <= USED 0
gap_bond_manager_delete_all <= USED 0
+gap_bond_manager_delete_by_idx <= USED 0
gap_conn_phy_update <= USED 0
gap_get_conn_phy <= USED 0
gap_get_encryption_status <= USED 0
gap_get_latest_bond_idx <= USED 0
gap_get_latest_conn_parameter <= USED 0
gap_get_link_features <= USED 0
-gap_get_link_rssi <= USED 0
gap_get_link_version <= USED 0
gap_param_update_rsp <= USED 0
gap_sec_clr_fixed_ltk <= USED 0
__asm___5_led_c_96aee7d6____REV16 <= USED 0
__asm___5_led_c_96aee7d6____REVSH <= USED 0
__asm___5_led_c_96aee7d6____RRX <= USED 0
+bt2_bat3_led_set <= USED 0
+lowbat_led_timer_start <= USED 0
work_mode_led_off <= USED 0
work_mode_led_on <= USED 0
;FILE m_al_activity.o
ble_bond_addr_check_result <= USED 0
ble_bond_clr_all_info <= USED 0
ble_bond_clr_info <= USED 0
+ble_bond_clr_info_by_idx <= USED 0
ble_bond_get_last_bond_idx <= USED 0
gatt_load_peer_svc_from_flash <= USED 0
;FILE user_task.o