Index: format/user.format
===================================================================
--- /YC1308AC/branch/Shared_charging_line/format/user.format	(revision 379)
+++ /YC1308AC/branch/Shared_charging_line/format/user.format	(working copy)
@@ -181,8 +181,8 @@
 4 mem_device_uart_transmit_succ
 
 //le user
-3 mem_device_rcvd_password
-1 mem_device_rcvd_password_coordinate
+//3 mem_device_rcvd_password
+//1 mem_device_rcvd_password_coordinate
 
 //hardware config
 1 mem_device_charge_en_gpio
@@ -190,7 +190,56 @@
 1 mem_device_uart_rx_gpio
 
 
-
+6 mem_password_user_input
+3 mem_password_correct
+1 mem_password_user_input_ptr
+1 mem_password_input_full
+1 mem_record_user_input_flag
+1 mem_record_user_input_ptr
+8 mem_password_free_1_min_judge_base
+12 mem_password_user_input_record
+3 mem_password_temp
+1 mem_use_free_1_min_start
+
+0 mem_device_rcvd_password_coordinate
+1 mem_device_rcvd_password_coordinate_x
+1 mem_device_rcvd_password_coordinate_y
+3 mem_device_rcvd_password                         //recv from ble
+3 mem_device_rcvd_password_from_user
+
+1 mem_input_error_num_init
+1 mem_input_error_num
+1 mem_after_input_error_input_correct_num_init
+//1 mem_use_1_min_num
+
+1 mem_to_be_synchronized_flag
+1 mem_device_rcvd_password_coordinate_x_temp
+1 mem_device_rcvd_password_coordinate_y_temp
+//timer count
+1 mem_device_power_recover_count
+
+2 mem_device_lock_count
+1 mem_device_led_power_led_on_timer
+2 mem_device_store_info_timer
+2 mem_device_store_charge_time_timer  //store package charge time to eeprom timer
+3 mem_device_charge_control_count      //keep the order
+1 mem_recover_times_from_power_off
+2 mem_charge_for_free_cooling_count
+
+
+1 mem_in_charge_flag
+1 mem_device_in_charge_probation
+1 mem_charge_for_free_not_cooling
+
+1 mem_rtn_after_unlock
+1 mem_data_burned
+
+1 mem_device_power_recover_count_read_from_eeprom
+3 mem_device_charge_control_count_read_from_eeprom
+
+16 mem_password_now_state
+8 mem_password_now_state_init
+1 mem_charge_for_free
 )
 
 
@@ -214,6 +263,7 @@
 0x07 OFFSET_PACKET_DATA
 0x07 OFFSET_PACKET_HEADER
 0x08 OFFSET_PACKET_OPCODE
+0x09 OFFSET_PACKET_USEDATA
 0x0d OFFSET_PACKET_PASSWORD
 )
 
@@ -244,7 +294,43 @@
 
 (
 0x00 DEVICE_INFO_EEPROM_OFFECT
+//0x300 DEVICE_CHARGE_INFO_OFFSET
+0x300 DEVICE_CHARGE_COOLING_INFO_OFFSET
+0x30a DEVICE_CHARGE_TIME_INFO_OFFSET
+0x310 DEVICE_CHARGE_PACKAGE_STATUS_OFFSET  
+)
+(
+0x111111  	USE_FOR_FREE_5_MIN
+)
+
+(
+0x0a TIMER_1_S
+0x0b TIMER_1_1_S
+0x258	TIMER_1_MIN
+0xbb8 	TIMER_5_MIN
+0x2328	TIMER_15_MIN
+0x4650	TIMER_30_MIN
+0x8ca0	TIMER_1_HOUR
+
+)
+(
+0x0d 	PACKAGE_24_HOURS
+0x0e 	PACKAGE_30_MIN
+0x0f 	PACKAGE_5_MIN
+)
+
+(
+0x107 DEVICE_LED_ACTION_OFF_SEETING
+)
 
+(
+1 mark_use_for_free_1_min_disable
+2 mark_input_password_error_to_much
+3 mark_recover_from_power_down_disable
+4 mark_red_led_power_need_on
+)
 
+(
+0xfff4 UUID_CHRCTR_DEVICE_CHARGE
 )
 
Index: output/eeprom.dat
===================================================================
--- /YC1308AC/branch/Shared_charging_line/output/eeprom.dat	(revision 379)
+++ /YC1308AC/branch/Shared_charging_line/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-d2
-06
+a6
+0e
 c2
 84
 00
@@ -11,15 +11,15 @@
 c0
 45
 80
-07
+08
 c0
 4f
 80
-13
+14
 c0
 57
 00
-1a
+43
 20
 20
 13
@@ -27,7 +27,11 @@
 c0
 58
 80
-15
+16
+c0
+60
+00
+1b
 20
 20
 13
@@ -108,6 +112,166 @@
 20
 17
 6b
+ef
+e1
+00
+06
+c0
+02
+00
+20
+c0
+03
+1f
+8c
+c0
+02
+9f
+4e
+20
+60
+00
+00
+ef
+e1
+80
+06
+67
+e1
+c4
+36
+c0
+01
+1c
+e8
+c0
+01
+9c
+f0
+c0
+02
+1c
+f3
+c0
+03
+1d
+1c
+c0
+04
+1d
+69
+c0
+05
+00
+29
+20
+20
+1c
+d9
+20
+40
+1e
+8d
+68
+49
+44
+37
+6f
+e0
+c3
+c0
+c2
+81
+9e
+0c
+20
+40
+1a
+65
+24
+22
+9e
+c8
+20
+54
+1e
+12
+20
+74
+00
+00
+20
+40
+1a
+72
+18
+c0
+8d
+fe
+20
+40
+7c
+eb
+ef
+e1
+00
+06
+d8
+40
+ff
+f4
+98
+46
+7c
+00
+20
+22
+80
+3a
+20
+40
+7c
+e5
+20
+20
+1d
+f1
+20
+40
+7c
+eb
+58
+00
+00
+06
+1f
+e0
+a2
+01
+20
+40
+1e
+d4
+58
+00
+00
+0b
+e7
+e0
+80
+05
+df
+20
+00
+06
+d8
+c0
+4a
+06
+20
+20
+7d
+5f
 20
 75
 80
@@ -115,7 +279,7 @@
 58
 00
 00
-46
+75
 67
 e1
 44
@@ -123,15 +287,15 @@
 58
 00
 00
-48
+77
 67
 e1
 44
 67
 58
 00
-00
-c3
+01
+0c
 67
 e1
 44
@@ -139,7 +303,7 @@
 58
 00
 00
-60
+8f
 67
 e1
 44
@@ -147,7 +311,7 @@
 58
 00
 00
-58
+87
 67
 e1
 44
@@ -159,31 +323,55 @@
 20
 40
 01
-29
+78
 20
 40
-00
-c8
+01
+17
 20
 40
 01
-73
+bd
 20
 40
 01
-6d
+b7
 20
 40
 01
-a8
+f4
+20
+40
+03
+92
+20
+40
+02
+06
+20
+40
+02
+19
+20
+40
+02
+29
 20
 40
 00
-2d
+5a
 20
 20
 00
-43
+72
+6f
+e0
+ca
+72
+20
+7a
+00
+00
 df
 20
 00
@@ -195,7 +383,7 @@
 20
 40
 00
-36
+65
 60
 48
 c2
@@ -267,7 +455,7 @@
 c2
 00
 00
-37
+66
 20
 60
 00
@@ -286,12 +474,12 @@
 07
 20
 40
-00
-cf
+01
+1e
 20
 20
 01
-84
+ce
 1a
 62
 7e
@@ -299,11 +487,11 @@
 c0
 0a
 00
-4c
+7b
 c0
 0a
 80
-4f
+7e
 20
 60
 00
@@ -355,7 +543,7 @@
 20
 20
 00
-43
+72
 20
 40
 1b
@@ -395,7 +583,7 @@
 c0
 09
 00
-63
+92
 20
 60
 00
@@ -407,11 +595,11 @@
 c0
 0b
 00
-6f
+9e
 c0
 0b
 80
-67
+96
 20
 60
 00
@@ -455,7 +643,7 @@
 c0
 f8
 00
-8e
+cb
 6f
 e0
 81
@@ -467,15 +655,15 @@
 c0
 02
 00
-77
+a6
 c0
 01
 00
-7c
+b4
 c0
 01
 80
-81
+bb
 20
 60
 00
@@ -483,7 +671,7 @@
 20
 40
 00
-86
+c3
 70
 4a
 09
@@ -492,6 +680,14 @@
 4a
 0a
 00
+20
+40
+00
+ad
+20
+40
+03
+82
 da
 60
 4a
@@ -499,11 +695,39 @@
 20
 20
 00
-5b
-20
-40
-00
-86
+8a
+6f
+e0
+ca
+6e
+24
+7a
+00
+00
+70
+4a
+6f
+01
+68
+48
+81
+76
+58
+00
+02
+58
+98
+4f
+fe
+00
+20
+20
+02
+46
+20
+40
+00
+c3
 70
 4a
 09
@@ -512,6 +736,14 @@
 4a
 0a
 00
+70
+4a
+68
+00
+20
+40
+03
+68
 da
 60
 4a
@@ -519,11 +751,11 @@
 20
 20
 00
-5b
+8a
 20
 40
 00
-86
+c3
 70
 4a
 09
@@ -532,6 +764,18 @@
 4a
 0a
 00
+6f
+e0
+81
+76
+67
+e0
+ca
+6b
+20
+40
+02
+25
 da
 60
 4a
@@ -539,7 +783,7 @@
 20
 20
 00
-5b
+8a
 df
 20
 00
@@ -575,7 +819,7 @@
 20
 40
 00
-93
+dc
 70
 4a
 07
@@ -584,6 +828,34 @@
 4a
 0a
 00
+79
+20
+00
+04
+70
+4a
+63
+0a
+6f
+e0
+ca
+5e
+1f
+e6
+7c
+0f
+24
+21
+00
+d7
+6f
+e0
+ca
+5e
+24
+5a
+02
+cb
 da
 60
 4a
@@ -591,7 +863,27 @@
 20
 20
 00
-5b
+8a
+58
+00
+00
+00
+67
+e1
+4a
+5e
+20
+40
+01
+b3
+da
+60
+4a
+03
+20
+20
+00
+8a
 78
 34
 7c
@@ -616,10 +908,26 @@
 42
 fe
 56
+d8
+a0
+4a
+54
+d8
+c0
+01
+74
 20
 40
 00
-a2
+fb
+da
+40
+4a
+54
+20
+40
+00
+ef
 58
 00
 00
@@ -643,7 +951,7 @@
 6f
 e0
 ca
-2d
+5f
 67
 e0
 ca
@@ -652,10 +960,6 @@
 60
 00
 00
-20
-40
-00
-b0
 df
 20
 00
@@ -664,22 +968,14 @@
 20
 0a
 1d
-da
-40
-4a
-2a
 70
-09
-64
-00
+4a
+5f
+01
 70
 4a
-2d
+5e
 01
-20
-40
-00
-ba
 ef
 e1
 80
@@ -700,10 +996,14 @@
 20
 a2
 03
+20
+40
+01
+03
 c2
 00
 00
-a8
+f3
 20
 20
 7e
@@ -712,14 +1012,6 @@
 20
 00
 03
-d8
-a0
-4a
-2a
-d8
-c0
-01
-74
 ef
 e0
 80
@@ -743,35 +1035,35 @@
 c2
 00
 00
-b3
+fc
 20
 60
 00
 00
 6f
 e0
-89
-64
+ca
+5f
 1f
 e0
 fe
 01
 67
 e0
-89
-64
+ca
+5f
 c1
 88
 00
 00
 70
-09
-64
-00
+4a
+5f
+01
 6f
 e0
 ca
-2d
+5e
 1f
 e0
 fe
@@ -779,19 +1071,43 @@
 67
 e0
 ca
-2d
+5e
 20
 60
 00
 00
 20
 40
-01
-41
+03
+55
 20
+40
+03
+45
 20
-00
-c5
+40
+03
+5a
+20
+40
+03
+5e
+20
+40
+03
+78
+20
+40
+03
+63
+20
+40
+03
+4f
+20
+20
+01
+14
 da
 60
 49
@@ -826,56 +1142,56 @@
 01
 c2
 00
-00
-ca
+01
+19
 20
 60
 00
 00
 20
 40
-00
-d8
+01
+27
 24
 74
 00
 00
-c0
+79
+20
 00
-81
-63
-c0
-01
-01
-63
-c0
-02
-01
-63
-c0
 04
-01
+70
+4a
 63
-c0
-08
+0b
+c5
 01
-63
-c0
-10
 01
-63
-20
-60
-00
-00
+25
 20
 40
-7e
-56
+01
+ad
+20
+20
+02
+a8
 20
 40
-00
-e2
+01
+b3
+20
+20
+02
+a8
+20
+40
+7e
+56
+20
+40
+01
+31
 1a
 22
 7e
@@ -914,28 +1230,28 @@
 00
 20
 40
-00
-eb
+01
+3a
 20
 40
-00
-f1
+01
+40
 20
 40
-00
-f7
+01
+46
 20
 40
-00
-fd
+01
+4c
 20
 40
 01
-05
+54
 20
 40
 01
-0d
+5c
 1a
 22
 7e
@@ -959,7 +1275,7 @@
 20
 40
 01
-15
+64
 67
 e0
 ca
@@ -983,7 +1299,7 @@
 20
 40
 01
-15
+64
 67
 e0
 ca
@@ -1007,7 +1323,7 @@
 20
 40
 01
-15
+64
 67
 e0
 ca
@@ -1035,7 +1351,7 @@
 20
 40
 01
-1f
+6e
 67
 e0
 ca
@@ -1067,7 +1383,7 @@
 20
 40
 01
-1f
+6e
 67
 e0
 ca
@@ -1099,7 +1415,7 @@
 20
 40
 01
-1f
+6e
 67
 e0
 ca
@@ -1191,7 +1507,7 @@
 20
 20
 01
-19
+68
 da
 20
 00
@@ -1280,34 +1596,14 @@
 20
 61
 f8
-6f
-e1
-49
-86
-20
-20
-62
-16
-6f
-e0
-c9
-8c
-20
-7a
-00
+58
 00
-da
-60
-49
-93
-da
-40
 01
-46
+07
 20
 20
-31
-8a
+62
+16
 6f
 e0
 c9
@@ -1323,7 +1619,7 @@
 20
 3a
 01
-4e
+98
 6f
 e0
 c9
@@ -1339,7 +1635,7 @@
 20
 3a
 01
-5c
+a6
 6f
 e0
 c9
@@ -1347,11 +1643,11 @@
 c0
 00
 81
-57
+a1
 c0
 00
 01
-52
+9c
 20
 60
 00
@@ -1363,7 +1659,7 @@
 20
 20
 01
-37
+86
 70
 49
 93
@@ -1383,7 +1679,7 @@
 24
 3a
 01
-5a
+a4
 70
 49
 8c
@@ -1395,11 +1691,11 @@
 20
 20
 01
-3a
+89
 20
 20
 01
-54
+9e
 70
 49
 95
@@ -1447,7 +1743,7 @@
 20
 20
 01
-60
+aa
 70
 49
 94
@@ -1463,11 +1759,11 @@
 20
 20
 01
-60
+aa
 68
 48
 ca
-2e
+2a
 20
 20
 60
@@ -1475,7 +1771,7 @@
 68
 48
 ca
-2e
+2a
 20
 20
 60
@@ -1483,7 +1779,7 @@
 68
 48
 ca
-2e
+2a
 20
 20
 60
@@ -1523,7 +1819,7 @@
 6f
 e0
 ca
-2f
+2b
 d8
 40
 00
@@ -1535,7 +1831,7 @@
 6f
 e0
 ca
-30
+2c
 d8
 40
 00
@@ -1603,153 +1899,1861 @@
 e7
 e0
 80
-05
-c2
-00
-01
-8e
-20
-40
-5f
-07
-58
+05
+c2
+00
+01
+d8
+20
+40
+5f
+07
+58
+00
+00
+00
+df
+20
+02
+cd
+d8
+c0
+0c
+c4
+20
+40
+7e
+62
+1f
+e1
+7e
+ff
+68
+48
+8f
+91
+98
+46
+7c
+00
+24
+62
+80
+00
+20
+40
+01
+fa
+df
+20
+02
+ce
+d8
+a0
+09
+f6
+d8
+c0
+0c
+c4
+20
+40
+7d
+52
+20
+40
+01
+ec
+20
+40
+03
+92
+20
+20
+00
+5a
+df
+20
+00
+04
+da
+20
+4a
+26
+20
+40
+7c
+c8
+20
+40
+5f
+0f
+1a
+22
+0c
+00
+20
+40
+5f
+1f
+20
+40
+5f
+13
+20
+20
+7c
+d4
+58
+00
+0c
+c4
+d8
+40
+09
+f6
+98
+46
+04
+00
+da
+20
+09
+f6
+da
+40
+00
+00
+20
+20
+5d
+dc
+58
+00
+0f
+92
+d8
+40
+0c
+c4
+98
+46
+04
+00
+da
+20
+0c
+c4
+da
+40
+00
+00
+20
+20
+5d
+ce
+6f
+e0
+8c
+c1
+20
+7a
+00
+00
+d8
+40
+00
+02
+da
+20
+4a
+6c
+da
+40
+03
+00
+20
+20
+5d
+ce
+6f
+e0
+8c
+c1
+20
+7a
+00
+00
+d8
+40
+00
+02
+da
+20
+4a
+6c
+da
+40
+03
+00
+20
+40
+5d
+dc
+58
+00
+8c
+a0
+68
+49
+4a
+6c
+98
+46
+7c
+00
+24
+61
+00
+00
+18
+42
+7e
+00
+20
+7a
+00
+00
+70
+4a
+70
+01
+70
+4a
+64
+58
+20
+60
+00
+00
+d8
+40
+00
+0f
+da
+20
+4a
+78
+da
+40
+03
+10
+20
+20
+5d
+ce
+d8
+40
+00
+0f
+da
+20
+4a
+78
+da
+40
+03
+10
+20
+40
+5d
+dc
+6f
+e0
+ca
+78
+d8
+40
+00
+10
+98
+46
+7c
+00
+24
+61
+00
+00
+6f
+e4
+4a
+87
+67
+e4
+4a
+77
+67
+e4
+4a
+7f
+20
+60
+00
+00
+d8
+40
+00
+04
+da
+20
+4a
+68
+da
+40
+03
+0a
+20
+20
+5d
+ce
+d8
+40
+00
+04
+da
+20
+4a
+68
+da
+40
+03
+0a
+20
+40
+5d
+dc
+58
+00
+ff
+ff
+68
+49
+4a
+6a
+98
+46
+7c
+00
+20
+22
+82
+3d
+6f
+e1
+ca
+68
+1f
+e6
+7e
+00
+20
+7a
+00
+00
+6f
+e0
+ca
+6b
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+67
+e0
+ca
+6b
+20
+5a
+02
+42
+20
+40
+02
+25
+58
+00
+02
+58
+67
+e1
+4a
+66
+20
+20
+02
+47
+58
+00
+00
+00
+67
+e1
+ca
+68
+6f
+e0
+8a
+1b
+67
+e0
+ca
+6b
+20
+60
+00
+00
+58
+00
+00
+00
+67
+e1
+ca
+68
+67
+e0
+ca
+6b
+20
+60
+00
+00
+67
+e1
+ca
+68
+70
+4a
+6e
+01
+20
+40
+01
+8b
+20
+20
+01
+b9
+6f
+e0
+ca
+6e
+24
+7a
+00
+00
+c6
+01
+00
+00
+6f
+e0
+ca
+70
+24
+3a
+01
+b3
+70
+4a
+8f
+01
+70
+4a
+6f
+01
+68
+48
+8c
+c0
+58
+00
+02
+58
+98
+4f
+fe
+00
+67
+e1
+4a
+6c
+20
+40
+02
+00
+68
+48
+8a
+1c
+58
+00
+02
+58
+98
+4f
+fe
+00
+20
+20
+02
+46
+6f
+e0
+ca
+6e
+24
+7a
+00
+00
+c6
+01
+00
+00
+6f
+e0
+8c
+c2
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+67
+e0
+8c
+c2
+70
+4a
+51
+01
+70
+4a
+6f
+01
+58
+00
+02
+58
+20
+20
+02
+46
+79
+20
+00
+01
+20
+60
+00
+00
+79
+20
+00
+02
+58
+00
+23
+28
+67
+e1
+4a
+61
+20
+60
+00
+00
+20
+40
+01
+b3
+6f
+e0
+ca
+5b
+1f
+e0
+fe
+01
+67
+e0
+ca
+5b
+68
+48
+ca
+5a
+98
+46
+7c
+00
+20
+21
+02
+67
+20
+60
+00
+00
+20
+40
+02
+d5
+20
+40
+02
+15
+58
+00
+00
+00
+67
+e1
+4a
+52
+67
+e0
+ca
+5b
+6f
+e0
+ca
+5e
+c0
+06
+82
+86
+c0
+07
+02
+89
+c0
+07
+82
+8b
+d8
+40
+8c
+a0
+98
+4f
+fe
+00
+20
+40
+02
+46
+20
+40
+02
+25
+58
+00
+02
+58
+67
+e1
+4a
+66
+6f
+e0
+ca
+6b
+24
+7a
+00
+00
+67
+e1
+4a
+66
+20
+60
+00
+00
+58
+00
+00
+18
+d8
+40
+8c
+a0
+20
+20
+02
+7d
+58
+00
+46
+50
+20
+20
+02
+46
+58
+00
+0b
+b8
+20
+20
+02
+46
+6f
+e0
+ca
+36
+1f
+e6
+7c
+05
+20
+42
+82
+9b
+da
+20
+4a
+2d
+9a
+20
+8a
+00
+20
+60
+00
+00
+6f
+e0
+ca
+36
+1f
+e0
+fe
+01
+67
+e0
+ca
+36
+20
+60
+00
+00
+6f
+e0
+ca
+36
+1f
+e0
+ff
+ff
+67
+e0
+ca
+36
+20
+60
+00
+00
+70
+4a
+36
+00
+70
+4a
+37
+01
+20
+60
+00
+00
+6f
+e0
+ca
+36
+24
+5a
+02
+97
+20
+40
+02
+90
+20
+40
+7c
+e8
+20
+40
+02
+97
+20
+40
+7c
+e2
+58
+00
+00
+00
+20
+20
+02
+b9
+70
+4a
+71
+00
+20
+60
+00
+00
+6f
+e0
+ca
+1a
+20
+7a
+00
+00
+6f
+e0
+ca
+36
+20
+5a
+02
+e6
+6f
+e0
+ca
+38
+24
+5a
+02
+ea
+c6
+01
+00
+00
+6f
+e0
+ca
+71
+24
+3a
+02
+a6
+6f
+e0
+ca
+1a
+1f
+e6
+7e
+20
+20
+3a
+02
+9e
+20
+40
+02
+8d
+6f
+e0
+ca
+1a
+c0
+02
+03
+39
+c0
+04
+03
+3b
+c0
+08
+03
+3d
+e7
+e0
+80
+05
+6f
+e0
+ca
+37
+24
+3a
+02
+bd
+20
+20
+02
+93
+70
+4a
+37
+00
+d8
+c0
+4a
+2d
+d8
+a0
+4a
+57
+20
+40
+00
+fb
+68
+49
+ca
+57
+58
+11
+11
+11
+98
+46
+7c
+00
+20
+22
+82
+4a
+da
+40
+4a
+57
+20
+40
+00
+ef
+20
+34
+02
+cb
+6f
+e0
+ca
+51
+24
+3a
+03
+37
+20
+20
+02
+6b
+6f
+e0
+ca
+5e
+20
+7a
+00
+00
+6f
+e0
+ca
+5e
+20
+40
+02
+dd
+68
+48
+ca
+5f
+98
+46
+7c
+00
+20
+22
+82
+73
+24
+41
+02
+d5
+20
+40
+02
+15
+20
+20
+01
+b3
+6f
+e0
+ca
+5e
+68
+48
+ca
+5f
+18
+46
+7c
+0f
+20
+42
+82
+db
+18
+40
+84
+01
+20
+20
+02
+e1
+d8
+40
+00
+00
+20
+60
+00
+00
+da
+40
+4a
+77
+9a
+40
+a4
+00
+ef
+e0
+80
+12
+20
+60
+00
+00
+da
+40
+4a
+77
+9a
+40
+8a
+00
+18
+42
+7e
+00
+e7
+e0
+80
+05
+20
+60
+00
+00
+70
+4a
+38
+01
+70
+4a
+39
+00
+78
+56
+7c
+00
+20
+60
+00
+00
+28
+0f
+fe
+02
+20
+20
+82
+f7
+6f
+e0
+ca
+39
+1f
+e6
+7c
+07
+20
+22
+83
+2e
+da
+20
+4a
+42
+9a
+20
+8a
+00
+6f
+e0
+ca
+1a
+e7
+e0
+80
+05
+6f
+e0
+ca
+39
+1f
+e0
+fe
+01
+67
+e0
+ca
+39
+20
+60
+00
+00
+6f
+e0
+ca
+1a
+c0
+02
+03
+3f
+c0
+04
+03
+41
+c0
+08
+03
+43
+67
+e0
+89
+64
+6f
+e0
+ca
+39
+1f
+e6
+7c
+0b
+20
+22
+83
+0a
+da
+20
+4a
+42
+9a
+20
+8a
+00
+6f
+e0
+89
+64
+e7
+e0
+80
+05
+6f
+e0
+ca
+39
+1f
+e0
+fe
+01
+67
+e0
+ca
+39
+6f
+e0
+ca
+36
+1f
+e0
+fe
+01
+67
+e0
+ca
+36
+20
+60
+00
+00
+6f
+e0
+89
+64
+67
+e0
+ca
+4d
+70
+4a
+39
+00
+d8
+c0
+4a
+42
+d8
+a0
+4a
+4e
+20
+40
+00
+fb
+da
+40
+4a
+4e
+20
+40
+00
+ef
+24
+34
+03
+1d
+6f
+e0
+ca
+5e
+20
+7a
+00
+00
+6f
+e0
+ca
+5e
+20
+40
+02
+dd
+68
+48
+ca
+5f
+98
+46
+7c
+00
+24
+22
+83
+1d
+6f
+e1
+4a
+5e
+67
+e1
+4a
+52
+20
+40
+03
+22
+70
+4a
+38
+00
+70
+4a
+36
+00
+70
+4a
+71
+01
+24
+56
+01
+b3
+20
+60
+00
+00
+d8
+c0
+4a
+48
+d8
+a0
+4a
+4e
+20
+40
+00
+fb
+da
+40
+4a
+4e
+20
+40
+00
+ef
+24
+74
+00
+00
+6f
+e1
+4a
+5e
+68
+49
+4a
+52
+98
+46
+7c
+00
+24
+62
+80
+00
+20
+40
+03
+86
+20
+20
+7e
+58
+6f
+e0
+ca
+1a
+67
+e0
+ca
+49
+70
+4a
+39
+00
+6f
+e4
+4a
+3a
+68
+4c
+4a
+42
+98
+46
+7c
+00
+20
+42
+82
+5a
+70
+4a
+38
+00
+20
+60
+00
+00
+70
+4a
+51
+00
+20
+60
+00
+00
+58
+00
+00
+03
+20
+20
+02
+b9
+58
+00
+00
+04
+20
+20
+02
+b9
+58
+00
+00
+05
+20
+20
+02
+b9
+58
+00
+00
+03
+20
+20
+02
+fb
+58
+00
+00
+04
+20
+20
+02
+fb
+58
+00
+00
+05
+20
+20
+02
+fb
+6f
+e0
+8c
+c1
+20
+7a
+00
+00
+6f
+e0
+ca
+70
+20
+7a
+00
+00
+da
+60
+4a
+64
+da
+40
+03
+4c
+20
+20
+31
+8a
+70
+4a
+64
+58
+20
+40
+02
+00
+20
+60
+00
+00
+c6
+82
+00
+00
+da
+60
+4a
+63
+da
+40
+03
+53
+20
+20
+31
+8a
+79
+3f
+80
+04
+20
+20
+01
+86
+6f
+e0
+c9
+8c
+20
+7a
+00
+00
+da
+60
+49
+93
+da
+40
+01
+90
+20
+20
+31
+8a
+c6
+81
+00
+00
+da
+60
+4a
+61
+da
+40
+03
+86
+20
+20
+31
+91
+6f
+e0
+ca
+6e
+20
+7a
+00
+00
+da
+60
+4a
+68
+da
+40
+03
+68
+20
+20
+03
+8b
+6f
+e0
+ca
+70
+20
+7a
+00
+00
+da
+60
+4a
+6c
+da
+40
+03
+82
+20
+20
+31
+91
+58
+00
+00
+00
+67
+e0
+ca
+6e
+67
+e1
+ca
+68
+20
+40
+01
+8e
+20
+40
+01
+bb
+20
+40
+02
+25
+6f
+e0
+ca
+6f
+24
+5a
+03
+76
+6f
+e0
+ca
+8f
+20
+7a
+00
+00
+70
+4a
+70
+01
+70
+4a
+64
+58
+70
+4a
+8f
+00
+20
+60
+00
+00
+70
+4a
+6f
+00
+20
+60
+00
+00
+6f
+e0
+ca
+6e
+20
+7a
+00
+00
+6f
+e1
+4a
+66
+20
+7a
+00
+00
+da
+60
+4a
+66
+da
+40
+03
+7f
+20
+20
+31
+91
+58
+00
+02
+58
+67
+e1
+4a
+66
+20
+20
+02
+25
+70
+4a
+70
+00
+58
+00
+00
+00
+67
+e1
+4a
+6c
+20
+20
+02
+00
+79
+3f
+80
+02
+58
+00
+00
+00
+67
+e1
+4a
+61
+67
+e0
+ca
+5b
+20
+60
+00
+00
+ef
+e1
+80
+13
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+e7
+e1
+80
+13
+24
+7a
 00
 00
+1a
+42
+7e
 00
-df
 20
-02
-cd
-d8
-c0
-0c
-c4
 20
-40
 7e
-62
-1f
+05
+6f
 e1
-7e
+0a
+1d
+d8
+40
+ff
 ff
-68
-48
-8f
-91
 98
 46
 7c
 00
-24
-62
-80
-00
 20
-40
+22
+83
+9c
+6f
+e0
+8a
+1b
+67
+e0
+ca
+6b
+70
+4a
+72
 01
-ae
-df
-20
-02
-ce
-d8
-a0
-09
-f6
-d8
-c0
-0c
-c4
 20
 40
-7d
-52
-20
-20
 01
-a0
-df
-20
-00
-04
-da
-20
-4a
-26
+86
 20
 40
-7c
-c8
+01
+bb
 20
-40
-5f
-0f
-1a
-22
-0c
-00
+20
+01
+8e
 20
 40
-5f
-1f
+01
+86
 20
 40
-5f
-13
+01
+b9
 20
 20
-7c
-d4
-58
-00
-0c
-c4
-d8
-40
-09
-f6
+01
+8b
+6f
+e0
+ca
+73
+68
+48
+8a
+1b
 98
 46
-04
+7c
 00
-da
 20
-09
-f6
-da
-40
+61
 00
 00
+1f
+e0
+fe
+01
+67
+e0
+ca
+60
+6f
+e1
+ca
+74
 20
 20
-5d
-dc
-58
-00
-0f
-92
-d8
-40
-0c
-c4
-98
+02
 46
-04
+79
+20
 00
-da
+03
 20
-0c
-c4
-da
-40
+60
 00
 00
-20
-20
-5d
-ce
-93
-a2
+f5
+dc
 aa
 55
 40
@@ -1812,7 +3816,7 @@
 00
 02
 00
-00
+01
 00
 00
 00
@@ -1950,7 +3954,7 @@
 55
 03
 00
-2e
+2a
 4a
 86
 04
@@ -1989,6 +3993,72 @@
 63
 aa
 55
+08
+00
+3a
+4a
+01
+02
+04
+08
+10
+20
+10
+10
+aa
+55
+02
+00
+52
+4a
+00
+00
+aa
+55
+01
+00
+5a
+4a
+05
+aa
+55
+01
+00
+5c
+4a
+02
+aa
+55
+18
+00
+77
+4a
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+01
+aa
+55
 06
 00
 7a
@@ -2471,11 +4541,5 @@
 40
 ef
 41
-55
-aa
-aa
-55
-12
-97
-09
-5b
+bd
+b7
Index: output/memmap.format
===================================================================
--- /YC1308AC/branch/Shared_charging_line/output/memmap.format	(revision 379)
+++ /YC1308AC/branch/Shared_charging_line/output/memmap.format	(working copy)
@@ -2583,11 +2583,48 @@
 0x4a22 mem_device_uart_tx_buffer_end
 0x4a24 mem_device_uarta_baud_rate
 0x4a26 mem_device_uart_transmit_succ
-0x4a2a mem_device_rcvd_password
-0x4a2d mem_device_rcvd_password_coordinate
-0x4a2e mem_device_charge_en_gpio
-0x4a2f mem_device_uart_tx_gpio
-0x4a30 mem_device_uart_rx_gpio
+0x4a2a mem_device_charge_en_gpio
+0x4a2b mem_device_uart_tx_gpio
+0x4a2c mem_device_uart_rx_gpio
+0x4a2d mem_password_user_input
+0x4a33 mem_password_correct
+0x4a36 mem_password_user_input_ptr
+0x4a37 mem_password_input_full
+0x4a38 mem_record_user_input_flag
+0x4a39 mem_record_user_input_ptr
+0x4a3a mem_password_free_1_min_judge_base
+0x4a42 mem_password_user_input_record
+0x4a4e mem_password_temp
+0x4a51 mem_use_free_1_min_start
+0x4a52 mem_device_rcvd_password_coordinate
+0x4a52 mem_device_rcvd_password_coordinate_x
+0x4a53 mem_device_rcvd_password_coordinate_y
+0x4a54 mem_device_rcvd_password//recv from ble
+0x4a57 mem_device_rcvd_password_from_user
+0x4a5a mem_input_error_num_init
+0x4a5b mem_input_error_num
+0x4a5c mem_after_input_error_input_correct_num_init
+0x4a5d mem_to_be_synchronized_flag
+0x4a5e mem_device_rcvd_password_coordinate_x_temp
+0x4a5f mem_device_rcvd_password_coordinate_y_temp
+0x4a60 mem_device_power_recover_count
+0x4a61 mem_device_lock_count
+0x4a63 mem_device_led_power_led_on_timer
+0x4a64 mem_device_store_info_timer
+0x4a66 mem_device_store_charge_time_timer//store package charge time to eeprom timer
+0x4a68 mem_device_charge_control_count//keep the order
+0x4a6b mem_recover_times_from_power_off
+0x4a6c mem_charge_for_free_cooling_count
+0x4a6e mem_in_charge_flag
+0x4a6f mem_device_in_charge_probation
+0x4a70 mem_charge_for_free_not_cooling
+0x4a71 mem_rtn_after_unlock
+0x4a72 mem_data_burned
+0x4a73 mem_device_power_recover_count_read_from_eeprom
+0x4a74 mem_device_charge_control_count_read_from_eeprom
+0x4a77 mem_password_now_state
+0x4a87 mem_password_now_state_init
+0x4a8f mem_charge_for_free
 
 0x4b46 mem_mesh_unsegmented_access_lower_transport_layer_head
 0x4b47 mem_mesh_unsegmented_access_lower_transport_layer_parameters
Index: output/program.lis
===================================================================
--- /YC1308AC/branch/Shared_charging_line/output/program.lis	(revision 379)
+++ /YC1308AC/branch/Shared_charging_line/output/program.lis	(working copy)
@@ -1,597 +1,1250 @@
               include "bt_format "
               org 0x0000
 0000 c2840005 bbit1 8 ,pf_patch_ext 
-0001 c0458007 beq patch11_3 ,p_initialize_radio_cont 
-0002 c04f8013 beq patch13_7 ,p_init_param 
-0003 c057001a beq patch15_6 ,p_app_init 
+0001 c0458008 beq patch11_3 ,p_initialize_radio_cont 
+0002 c04f8014 beq patch13_7 ,p_init_param 
+0003 c0570043 beq patch15_6 ,p_app_init 
 0004 2020137c branch loop 
 
 pf_patch_ext:
-0005 c0588015 beq patch36_1 ,p_le_receive_on_attempt 
-0006 2020137c branch loop 
+0005 c0588016 beq patch36_1 ,p_le_receive_on_attempt 
+0006 c060001b beq patch38_0 ,p_le_parse_read_request 
+0007 2020137c branch loop 
 
 p_initialize_radio_cont:
-0007 708a0305 jam 0x05 ,core_clkpll_cfg0 
-0008 708a7a94 jam 0x94 ,core_rx_iqadc_cfg 
-0009 20401277 call initialize_rc_cal 
-000a 20401271 call initialize_rf_ldo_cfg1 
-000b 2040126a call initialize_syn_afc_cfg1 
-000c 708a8be6 jam 0xe6 ,core_syn_aac_cfg1 
-000d 708a8390 jam 0x90 ,core_syn_pfd_lkd_cfg 
-000e 708a0e0b jam 0x0b ,core_rf_ldo_cfg2 
-000f 708a0f05 jam 0x05 ,core_rf_ldo_cfg3 
-0010 70896876 jam 0x76 ,core_agc_wb_sat_th 
-0011 70896976 jam 0x76 ,core_agc_nb_sat_th 
-0012 2020125d branch initialize_radio_cont + 8 
+0008 708a0305 jam 0x05 ,core_clkpll_cfg0 
+0009 708a7a94 jam 0x94 ,core_rx_iqadc_cfg 
+000a 20401277 call initialize_rc_cal 
+000b 20401271 call initialize_rf_ldo_cfg1 
+000c 2040126a call initialize_syn_afc_cfg1 
+000d 708a8be6 jam 0xe6 ,core_syn_aac_cfg1 
+000e 708a8390 jam 0x90 ,core_syn_pfd_lkd_cfg 
+000f 708a0e0b jam 0x0b ,core_rf_ldo_cfg2 
+0010 708a0f05 jam 0x05 ,core_rf_ldo_cfg3 
+0011 70896876 jam 0x76 ,core_agc_wb_sat_th 
+0012 70896976 jam 0x76 ,core_agc_nb_sat_th 
+0013 2020125d branch initialize_radio_cont + 8 
 
 p_init_param:
-0013 70008000 jam 0 ,mem_lmo_tid2 
-0014 202013b7 branch init_param + 51 
+0014 70008000 jam 0 ,mem_lmo_tid2 
+0015 202013b7 branch init_param + 51 
 
 p_le_receive_on_attempt:
-0015 78287c00 enable swfine 
-0016 d8404ea9 arg param_t_ifs_150us + param_20ms_init + -13 ,temp 
-0017 6fe0c1f0 fetch 1 ,mem_system_clk 
-0018 984fb600 imul32 temp ,stop_watch 
-0019 2020176b branch le_receive_on_attempt + 6 
+0016 78287c00 enable swfine 
+0017 d8404ea9 arg param_t_ifs_150us + param_20ms_init + -13 ,temp 
+0018 6fe0c1f0 fetch 1 ,mem_system_clk 
+0019 984fb600 imul32 temp ,stop_watch 
+001a 2020176b branch le_receive_on_attempt + 6 
+
+p_le_parse_read_request:
+001b efe10006 ifetch 2 ,contr 
+001c c0020020 beq le_l2cap_cid_att ,p_le_parse_att 
+001d c0031f8c beq le_l2cap_cid_smp ,le_parse_smp 
+001e c0029f4e beq le_l2cap_cid_signal ,le_parse_signaling 
+001f 20600000 rtn 
+
+p_le_parse_att:
+0020 efe18006 ifetch 3 ,contr 
+0021 67e1c436 store 3 ,mem_le_att_opcode 
+0022 c0011ce8 beq attop_exchange_mtu_request ,le_parse_att_exchange_mtu_request 
+0023 c0019cf0 beq attop_exchange_mtu_response ,le_parse_att_exchange_mtu_response 
+0024 c0021cf3 beq attop_find_information_request ,le_parse_att_find_information_request 
+0025 c0031d1c beq attop_find_by_type_value_request ,le_parse_att_find_by_type_value_request 
+0026 c0041d69 beq attop_read_by_type_request ,le_parse_att_read_by_type_request 
+0027 c0050029 beq attop_read_request ,p_le_parse_att_read_request 
+0028 20201cd9 branch le_parse_att + 8 
+
+p_le_parse_att_read_request:
+0029 20401e8d call le_check_encrypt_state 
+002a 68494437 fetcht 2 ,mem_le_att_handle 
+002b 6fe0c3c0 fetch 1 ,mem_le_configuration 
+002c c2819e0c bbit1 bit_ble_read_auth ,le_send_att_read_response_check_auth 
+
+p_le_send_att_read_response:
+002d 20401a65 call le_att_get_handle_ptr2 
+002e 24229ec8 nbranch le_send_att_error_response_notfound ,zero 
+002f 20541e12 call le_send_att_read_response_check_handle ,user 
+0030 20740000 rtn user 
+0031 20401a72 call le_att_get_handle_ptr_found 
+0032 18c08dfe increase -2 ,contr 
+0033 20407ceb call store_contr 
+0034 efe10006 ifetch 2 ,contr 
+0035 d840fff4 arg uuid_chrctr_device_charge ,temp 
+0036 98467c00 isub temp ,null 
+0037 2022803a branch p_le_send_read_response ,zero 
+0038 20407ce5 call get_contr 
+0039 20201df1 branch le_send_att_read_response + 6 
+
+p_le_send_read_response:
+003a 20407ceb call store_contr 
+003b 58000006 setarg 6 
+003c 1fe0a201 add pdata ,1 ,rega 
+003d 20401ed4 call le_fifo_malloc_tx_l2cap_gatt 
+003e 5800000b setarg attop_read_response 
+003f e7e08005 istore 1 ,contw 
+0040 df200006 arg 6 ,loopcnt 
+0041 d8c04a06 arg mem_device_rsp_header ,contr 
+0042 20207d5f branch memcpy 
 
 p_app_init:
-001a 20758000 rtn wake 
-001b 58000046 setarg p_device_idle_process 
-001c 67e14465 store 2 ,mem_cb_idle_process 
-001d 58000048 setarg p_device_bb_event_process 
-001e 67e14467 store 2 ,mem_cb_bb_event_process 
-001f 580000c3 setarg p_device_bb_event_timer 
-0020 67e1446f store 2 ,mem_cb_event_timer 
-0021 58000060 setarg p_device_le_receive_data_process 
-0022 67e1446b store 2 ,mem_cb_att_write 
-0023 58000058 setarg p_device_le_transmit_data_process 
-0024 67e1446d store 2 ,mem_cb_ble_transmit 
-0025 2040793a call queue_init 
-0026 20400129 call p_device_led_init 
-0027 204000c8 call p_device_key_init 
-0028 20400173 call p_device_uarta_init 
-0029 2040016d call p_device_charge_gpio_init 
-002a 204001a8 call p_device_power_on_eeprom_load_info 
-002b 2040002d call p_device_modified_name 
-002c 20200043 branch p_device_ble_adv_start 
+0043 20758000 rtn wake 
+0044 58000075 setarg p_device_idle_process 
+0045 67e14465 store 2 ,mem_cb_idle_process 
+0046 58000077 setarg p_device_bb_event_process 
+0047 67e14467 store 2 ,mem_cb_bb_event_process 
+0048 5800010c setarg p_device_bb_event_timer 
+0049 67e1446f store 2 ,mem_cb_event_timer 
+004a 5800008f setarg p_device_le_receive_data_process 
+004b 67e1446b store 2 ,mem_cb_att_write 
+004c 58000087 setarg p_device_le_transmit_data_process 
+004d 67e1446d store 2 ,mem_cb_ble_transmit 
+004e 2040793a call queue_init 
+004f 20400178 call p_device_led_init 
+0050 20400117 call p_device_key_init 
+0051 204001bd call p_device_uarta_init 
+0052 204001b7 call p_device_charge_gpio_init 
+0053 204001f4 call p_device_power_on_eeprom_load_info 
+0054 20400392 call p_check_is_data_burned 
+0055 20400206 call p_device_load_use_for_free_info 
+0056 20400219 call p_device_load_charge_package_status_info 
+0057 20400229 call p_device_load_charge_time_info 
+0058 2040005a call p_device_modified_name 
+0059 20200072 branch p_device_ble_adv_start 
 
 p_device_modified_name:
-002d df200002 arg 2 ,loopcnt 
-002e da6009f9 arg mem_localname_length ,regc 
-002f 20400036 call string2dec 
-0030 6048c2f7 storet 1 ,mem_le_name_len 
-0031 18427200 copy temp ,loopcnt 
-0032 d8c009fb arg mem_localname ,contr 
-0033 d8a042f8 arg mem_le_name ,contw 
-0034 20407d5f call memcpy 
-0035 20201aa9 branch le_modified_name 
+005a 6fe0ca72 fetch 1 ,mem_data_burned 
+005b 207a0000 rtn blank 
+005c df200002 arg 2 ,loopcnt 
+005d da6009f9 arg mem_localname_length ,regc 
+005e 20400065 call string2dec 
+005f 6048c2f7 storet 1 ,mem_le_name_len 
+0060 18427200 copy temp ,loopcnt 
+0061 d8c009fb arg mem_localname ,contr 
+0062 d8a042f8 arg mem_le_name ,contw 
+0063 20407d5f call memcpy 
+0064 20201aa9 branch le_modified_name 
 
 string2dec:
-0036 d8400000 arg 0 ,temp 
+0065 d8400000 arg 0 ,temp 
 
 string2dec_done:
-0037 18422800 copy temp ,regab 
-0038 efe08013 ifetch 1 ,regc 
-0039 20407dc4 call uchar2dialog 
-003a 1a820400 copy regab ,temp 
-003b 20407dfe call swap 
-003c da40000a arg 10 ,regb 
-003d 9a4ffe00 imul32 regb ,pdata 
-003e 9840fe00 iadd temp ,pdata 
-003f 1fe20400 copy pdata ,temp 
-0040 1a60a601 increase 1 ,regc 
-0041 c2000037 loop string2dec_done 
-0042 20600000 rtn 
+0066 18422800 copy temp ,regab 
+0067 efe08013 ifetch 1 ,regc 
+0068 20407dc4 call uchar2dialog 
+0069 1a820400 copy regab ,temp 
+006a 20407dfe call swap 
+006b da40000a arg 10 ,regb 
+006c 9a4ffe00 imul32 regb ,pdata 
+006d 9840fe00 iadd temp ,pdata 
+006e 1fe20400 copy pdata ,temp 
+006f 1a60a601 increase 1 ,regc 
+0070 c2000066 loop string2dec_done 
+0071 20600000 rtn 
 
 p_device_ble_adv_start:
-0043 da4047a4 arg mem_device_lpm_interval ,regb 
-0044 204033b9 call device_adv_interval_lpm_interval_set 
-0045 20203207 branch app_ble_start_adv 
+0072 da4047a4 arg mem_device_lpm_interval ,regb 
+0073 204033b9 call device_adv_interval_lpm_interval_set 
+0074 20203207 branch app_ble_start_adv 
 
 p_device_idle_process:
-0046 204000cf call p_device_keyscan_process 
-0047 20200184 branch p_device_uarta_check_hci_complete 
+0075 2040011e call p_device_keyscan_process 
+0076 202001ce branch p_device_uarta_check_hci_complete 
 
 p_device_bb_event_process:
-0048 1a627e00 copy regc ,pdata 
-0049 c00a004c beq bt_evt_le_connected ,p_device_le_process_conn 
-004a c00a804f beq bt_evt_le_disconnected ,p_device_le_process_discon 
-004b 20600000 rtn 
+0077 1a627e00 copy regc ,pdata 
+0078 c00a007b beq bt_evt_le_connected ,p_device_le_process_conn 
+0079 c00a807e beq bt_evt_le_disconnected ,p_device_le_process_discon 
+007a 20600000 rtn 
 
 p_device_le_process_conn:
-004c 58000000 setarg 0 
-004d 67e1499a store 2 ,mem_device_fast_adv_timer 
-004e 20203205 branch app_ble_stop_adv 
+007b 58000000 setarg 0 
+007c 67e1499a store 2 ,mem_device_fast_adv_timer 
+007d 20203205 branch app_ble_stop_adv 
 
 p_device_le_process_discon:
-004f 58000000 setarg 0 
-0050 67e0c99e store 1 ,mem_device_conn_update_timer 
-0051 67e0c99f store 1 ,mem_device_send_updata_le_param_timer 
-0052 67e0c7a8 store 1 ,mem_device_conn_updata_procedure_state 
-0053 67e147a9 store 2 ,mem_device_client_characteristic_configuration_descriptor 
-0054 67e143db store 2 ,mem_le_l2cap_signaling_conn_param_update_rsp_result 
-0055 2040793a call queue_init 
-0056 20401b1c call le_clr_config_more_data 
-0057 20200043 branch p_device_ble_adv_start 
+007e 58000000 setarg 0 
+007f 67e0c99e store 1 ,mem_device_conn_update_timer 
+0080 67e0c99f store 1 ,mem_device_send_updata_le_param_timer 
+0081 67e0c7a8 store 1 ,mem_device_conn_updata_procedure_state 
+0082 67e147a9 store 2 ,mem_device_client_characteristic_configuration_descriptor 
+0083 67e143db store 2 ,mem_le_l2cap_signaling_conn_param_update_rsp_result 
+0084 2040793a call queue_init 
+0085 20401b1c call le_clr_config_more_data 
+0086 20200072 branch p_device_ble_adv_start 
 
 p_device_le_transmit_data_process:
-0058 20401b77 call le_fifo_check_nearly_full 
-0059 247a0000 nrtn blank 
-005a 20203278 branch device_le_notification 
+0087 20401b77 call le_fifo_check_nearly_full 
+0088 247a0000 nrtn blank 
+0089 20203278 branch device_le_notification 
 
 p_device_prepare_data_and_send:
-005b 6fe0c7a9 fetch 1 ,mem_device_client_characteristic_configuration_descriptor 
-005c 2feffe00 isolate1 notification_enable_bit ,pdata 
-005d 24608000 nrtn true 
-005e 1a622200 copy regc ,rega 
-005f 2020793f branch queue_push 
+008a 6fe0c7a9 fetch 1 ,mem_device_client_characteristic_configuration_descriptor 
+008b 2feffe00 isolate1 notification_enable_bit ,pdata 
+008c 24608000 nrtn true 
+008d 1a622200 copy regc ,rega 
+008e 2020793f branch queue_push 
 
 p_device_le_receive_data_process:
-0060 6fe0c436 fetch 1 ,mem_le_att_opcode 
-0061 c0090063 beq attop_write_request ,p_device_le_parse_att_write_request 
-0062 20600000 rtn 
+008f 6fe0c436 fetch 1 ,mem_le_att_opcode 
+0090 c0090092 beq attop_write_request ,p_device_le_parse_att_write_request 
+0091 20600000 rtn 
 
 p_device_le_parse_att_write_request:
-0063 6fe14437 fetch 2 ,mem_le_att_handle 
-0064 c00b006f beq user_spec_write_handle ,p_device_parse_write_request_handle 
-0065 c00b8067 beq user_spec_notification_enable_handle ,p_device_parse_notify_enable_handle 
-0066 20600000 rtn 
+0092 6fe14437 fetch 2 ,mem_le_att_handle 
+0093 c00b009e beq user_spec_write_handle ,p_device_parse_write_request_handle 
+0094 c00b8096 beq user_spec_notification_enable_handle ,p_device_parse_notify_enable_handle 
+0095 20600000 rtn 
 
 p_device_parse_notify_enable_handle:
-0067 efe10011 ifetch 2 ,rega 
-0068 67e147a9 store 2 ,mem_device_client_characteristic_configuration_descriptor 
-0069 2feffe00 isolate1 notification_enable_bit ,pdata 
-006a 24608000 nrtn true 
-006b 70499f1e jam 30 ,mem_device_send_updata_le_param_timer 
-006c 6fe447ae fetch 8 ,mem_device_le_interval_min 
-006d 67e44372 store 8 ,mem_le_interval_min 
-006e 2020793a branch queue_init 
+0096 efe10011 ifetch 2 ,rega 
+0097 67e147a9 store 2 ,mem_device_client_characteristic_configuration_descriptor 
+0098 2feffe00 isolate1 notification_enable_bit ,pdata 
+0099 24608000 nrtn true 
+009a 70499f1e jam 30 ,mem_device_send_updata_le_param_timer 
+009b 6fe447ae fetch 8 ,mem_device_le_interval_min 
+009c 67e44372 store 8 ,mem_le_interval_min 
+009d 2020793a branch queue_init 
 
 p_device_parse_write_request_handle:
-006f 6fe08174 fetch 1 ,mem_le_rxbuf_data_payload + offset_packet_header 
-0070 c0f8008e bne cmd_header ,p_device_charge_regularly 
-0071 6fe08175 fetch 1 ,mem_le_rxbuf_data_payload + offset_packet_opcode 
-0072 67e0ca07 store 1 ,mem_device_rsp_opcode 
-0073 c0020077 beq cmd_charge_provisionally ,p_device_charge_provisionally 
-0074 c001007c beq cmd_power_off_forcibly ,p_device_power_off_forcibly 
-0075 c0018081 beq cmd_power_recover_times_setting ,p_device_power_recover_times_setting 
-0076 20600000 rtn 
+009e 6fe08174 fetch 1 ,mem_le_rxbuf_data_payload + offset_packet_header 
+009f c0f800cb bne cmd_header ,p_device_charge_regularly 
+00a0 6fe08175 fetch 1 ,mem_le_rxbuf_data_payload + offset_packet_opcode 
+00a1 67e0ca07 store 1 ,mem_device_rsp_opcode 
+00a2 c00200a6 beq cmd_charge_provisionally ,p_device_charge_provisionally 
+00a3 c00100b4 beq cmd_power_off_forcibly ,p_device_power_off_forcibly 
+00a4 c00180bb beq cmd_power_recover_times_setting ,p_device_power_recover_times_setting 
+00a5 20600000 rtn 
 
 p_device_charge_provisionally:
-0077 20400086 call p_device_password_verify 
-0078 704a0900 jam 0 ,mem_device_rsp_data1 
-0079 704a0a00 jam 0 ,mem_device_rsp_data2 
-007a da604a03 arg mem_device_rsp_pkt ,regc 
-007b 2020005b branch p_device_prepare_data_and_send 
+00a6 204000c3 call p_device_password_verify 
+00a7 704a0900 jam 0 ,mem_device_rsp_data1 
+00a8 704a0a00 jam 0 ,mem_device_rsp_data2 
+00a9 204000ad call p_device_charge_provisionally_judge_ischarging 
+00aa 20400382 call p_device_charge_free_cooling_end 
+00ab da604a03 arg mem_device_rsp_pkt ,regc 
+00ac 2020008a branch p_device_prepare_data_and_send 
+
+p_device_charge_provisionally_judge_ischarging:
+00ad 6fe0ca6e fetch 1 ,mem_in_charge_flag 
+00ae 247a0000 nrtn blank 
+00af 704a6f01 jam 1 ,mem_device_in_charge_probation 
+00b0 68488176 fetcht 1 ,mem_le_rxbuf_data_payload + offset_packet_usedata 
+00b1 58000258 setarg timer_1_min 
+00b2 984ffe00 imul32 temp ,pdata 
+00b3 20200246 branch p_turn_on_green_light_and_start_charge 
 
 p_device_power_off_forcibly:
-007c 20400086 call p_device_password_verify 
-007d 704a0900 jam 0 ,mem_device_rsp_data1 
-007e 704a0a00 jam 0 ,mem_device_rsp_data2 
-007f da604a03 arg mem_device_rsp_pkt ,regc 
-0080 2020005b branch p_device_prepare_data_and_send 
+00b4 204000c3 call p_device_password_verify 
+00b5 704a0900 jam 0 ,mem_device_rsp_data1 
+00b6 704a0a00 jam 0 ,mem_device_rsp_data2 
+00b7 704a6800 jam 0 ,mem_device_charge_control_count 
+00b8 20400368 call p_device_charge_end 
+00b9 da604a03 arg mem_device_rsp_pkt ,regc 
+00ba 2020008a branch p_device_prepare_data_and_send 
 
 p_device_power_recover_times_setting:
-0081 20400086 call p_device_password_verify 
-0082 704a0900 jam 0 ,mem_device_rsp_data1 
-0083 704a0a00 jam 0 ,mem_device_rsp_data2 
-0084 da604a03 arg mem_device_rsp_pkt ,regc 
-0085 2020005b branch p_device_prepare_data_and_send 
+00bb 204000c3 call p_device_password_verify 
+00bc 704a0900 jam 0 ,mem_device_rsp_data1 
+00bd 704a0a00 jam 0 ,mem_device_rsp_data2 
+00be 6fe08176 fetch 1 ,mem_le_rxbuf_data_payload + offset_packet_usedata 
+00bf 67e0ca6b store 1 ,mem_recover_times_from_power_off 
+00c0 20400225 call p_device_store_charge_time_info 
+00c1 da604a03 arg mem_device_rsp_pkt ,regc 
+00c2 2020008a branch p_device_prepare_data_and_send 
 
 p_device_password_verify:
-0086 df20000a arg 10 ,loopcnt 
-0087 da200a0b arg mem_burned_password ,rega 
-0088 da40017a arg mem_le_rxbuf_data_payload + offset_packet_password ,regb 
-0089 20407df1 call string_compare 
-008a 58000000 setarg 0 
-008b 7d22fe00 nsetflag zero ,0 ,pdata 
-008c 67e0ca08 store 1 ,mem_device_rsp_result 
-008d 20600000 rtn 
+00c3 df20000a arg 10 ,loopcnt 
+00c4 da200a0b arg mem_burned_password ,rega 
+00c5 da40017a arg mem_le_rxbuf_data_payload + offset_packet_password ,regb 
+00c6 20407df1 call string_compare 
+00c7 58000000 setarg 0 
+00c8 7d22fe00 nsetflag zero ,0 ,pdata 
+00c9 67e0ca08 store 1 ,mem_device_rsp_result 
+00ca 20600000 rtn 
 
 p_device_charge_regularly:
-008e 20400093 call p_device_charge_regularly_rsp_result_coordinate 
-008f 704a0701 jam 1 ,mem_device_rsp_opcode 
-0090 704a0a00 jam 0 ,mem_device_rsp_data2 
-0091 da604a03 arg mem_device_rsp_pkt ,regc 
-0092 2020005b branch p_device_prepare_data_and_send 
+00cb 204000dc call p_device_charge_regularly_rsp_result_coordinate 
+00cc 704a0701 jam 1 ,mem_device_rsp_opcode 
+00cd 704a0a00 jam 0 ,mem_device_rsp_data2 
+00ce 79200004 set1 mark_red_led_power_need_on ,mark 
+00cf 704a630a jam timer_1_s ,mem_device_led_power_led_on_timer 
+00d0 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+00d1 1fe67c0f sub pdata ,0x0f ,null 
+00d2 242100d7 nbranch p_unfound_password ,positive 
+00d3 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+00d4 245a02cb ncall p_password_found ,blank 
+00d5 da604a03 arg mem_device_rsp_pkt ,regc 
+00d6 2020008a branch p_device_prepare_data_and_send 
+
+p_unfound_password:
+00d7 58000000 setarg 0 
+00d8 67e14a5e store 2 ,mem_device_rcvd_password_coordinate_x_temp 
+00d9 204001b3 call p_device_led_power_password_error_blink 
+00da da604a03 arg mem_device_rsp_pkt ,regc 
+00db 2020008a branch p_device_prepare_data_and_send 
 
 p_device_charge_regularly_rsp_result_coordinate:
-0093 78347c00 enable user 
-0094 df20000a arg 10 ,loopcnt 
-0095 da200a0b arg mem_burned_password ,rega 
-0096 da40017a arg mem_le_rxbuf_data_payload + offset_packet_password ,regb 
-0097 20407df1 call string_compare 
-0098 2442fe56 ncall disable_user ,zero 
-0099 204000a2 call p_device_password_list_search 
-009a 58000000 setarg 0 
-009b 7d347e00 nsetflag user ,0 ,pdata 
-009c 67e0ca08 store 1 ,mem_device_rsp_result 
-009d 704a0900 jam 0 ,mem_device_rsp_data1 
-009e 24740000 nrtn user 
-009f 6fe0ca2d fetch 1 ,mem_device_rcvd_password_coordinate 
-00a0 67e0ca09 store 1 ,mem_device_rsp_data1 
-00a1 20600000 rtn 
+00dc 78347c00 enable user 
+00dd df20000a arg 10 ,loopcnt 
+00de da200a0b arg mem_burned_password ,rega 
+00df da40017a arg mem_le_rxbuf_data_payload + offset_packet_password ,regb 
+00e0 20407df1 call string_compare 
+00e1 2442fe56 ncall disable_user ,zero 
+00e2 d8a04a54 arg mem_device_rcvd_password ,contw 
+00e3 d8c00174 arg mem_le_rxbuf_data_payload + offset_packet_data ,contr 
+00e4 204000fb call password_get 
+00e5 da404a54 arg mem_device_rcvd_password ,regb 
+00e6 204000ef call p_device_password_list_search 
+00e7 58000000 setarg 0 
+00e8 7d347e00 nsetflag user ,0 ,pdata 
+00e9 67e0ca08 store 1 ,mem_device_rsp_result 
+00ea 704a0900 jam 0 ,mem_device_rsp_data1 
+00eb 24740000 nrtn user 
+00ec 6fe0ca5f fetch 1 ,mem_device_rcvd_password_coordinate_y_temp 
+00ed 67e0ca09 store 1 ,mem_device_rsp_data1 
+00ee 20600000 rtn 
 
 p_device_password_list_search:
-00a2 204000b0 call password_get 
-00a3 df2000e1 arg 225 ,loopcnt 
-00a4 da200a1d arg mem_password_list ,rega 
-00a5 da404a2a arg mem_device_rcvd_password ,regb 
-00a6 70096400 jam 0 ,mem_temp 
-00a7 704a2d01 jam 1 ,mem_device_rcvd_password_coordinate 
+00ef df2000e1 arg 225 ,loopcnt 
+00f0 da200a1d arg mem_password_list ,rega 
+00f1 704a5f01 jam 1 ,mem_device_rcvd_password_coordinate_y_temp 
+00f2 704a5e01 jam 1 ,mem_device_rcvd_password_coordinate_x_temp 
 
 password_search:
-00a8 204000ba call password_coordinate 
-00a9 efe18011 ifetch 3 ,rega 
-00aa e8418012 ifetcht 3 ,regb 
-00ab 98467c00 isub temp ,null 
-00ac 20628000 rtn zero 
-00ad 1a20a203 increase 3 ,rega 
-00ae c20000a8 loop password_search 
-00af 20207e56 branch disable_user 
+00f3 efe18011 ifetch 3 ,rega 
+00f4 e8418012 ifetcht 3 ,regb 
+00f5 98467c00 isub temp ,null 
+00f6 20628000 rtn zero 
+00f7 1a20a203 increase 3 ,rega 
+00f8 20400103 call password_coordinate 
+00f9 c20000f3 loop password_search 
+00fa 20207e56 branch disable_user 
 
 password_get:
-00b0 df200003 arg 3 ,loopcnt 
-00b1 d8a04a2a arg mem_device_rcvd_password ,contw 
-00b2 d8c00174 arg mem_le_rxbuf_data_payload + offset_packet_data ,contr 
+00fb df200003 arg 3 ,loopcnt 
 
 password_get_loop:
-00b3 efe08006 ifetch 1 ,contr 
-00b4 1ff27e00 lshift4 pdata ,pdata 
-00b5 e8408006 ifetcht 1 ,contr 
-00b6 98418400 ior temp ,temp 
-00b7 e0408005 istoret 1 ,contw 
-00b8 c20000b3 loop password_get_loop 
-00b9 20600000 rtn 
+00fc efe08006 ifetch 1 ,contr 
+00fd 1ff27e00 lshift4 pdata ,pdata 
+00fe e8408006 ifetcht 1 ,contr 
+00ff 98418400 ior temp ,temp 
+0100 e0408005 istoret 1 ,contw 
+0101 c20000fc loop password_get_loop 
+0102 20600000 rtn 
 
 password_coordinate:
-00ba 6fe08964 fetch 1 ,mem_temp 
-00bb 1fe0fe01 increase 1 ,pdata 
-00bc 67e08964 store 1 ,mem_temp 
-00bd c1880000 rtnne 0x10 
-00be 70096400 jam 0 ,mem_temp 
-00bf 6fe0ca2d fetch 1 ,mem_device_rcvd_password_coordinate 
-00c0 1fe0fe01 increase 1 ,pdata 
-00c1 67e0ca2d store 1 ,mem_device_rcvd_password_coordinate 
-00c2 20600000 rtn 
+0103 6fe0ca5f fetch 1 ,mem_device_rcvd_password_coordinate_y_temp 
+0104 1fe0fe01 increase 1 ,pdata 
+0105 67e0ca5f store 1 ,mem_device_rcvd_password_coordinate_y_temp 
+0106 c1880000 rtnne 0x10 
+0107 704a5f01 jam 1 ,mem_device_rcvd_password_coordinate_y_temp 
+0108 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+0109 1fe0fe01 increase 1 ,pdata 
+010a 67e0ca5e store 1 ,mem_device_rcvd_password_coordinate_x_temp 
+010b 20600000 rtn 
 
 p_device_bb_event_timer:
-00c3 20400141 call p_device_led_power_blink_timer 
-00c4 202000c5 branch p_device_app_updata_le_param_timer 
+010c 20400355 call p_device_led_power_blink_timer 
+010d 20400345 call p_device_check_store_info_timer 
+010e 2040035a call p_device_lock_timer 
+010f 2040035e call p_device_charge_timer 
+0110 20400378 call p_device_store_charge_time_timer 
+0111 20400363 call p_device_charge_free_cooling_timer 
+0112 2040034f call p_device_check_red_led_on_timer 
+0113 20200114 branch p_device_app_updata_le_param_timer 
 
 p_device_app_updata_le_param_timer:
-00c5 da60499f arg mem_device_send_updata_le_param_timer ,regc 
-00c6 da401f57 arg le_l2cap_tx_update_req ,regb 
-00c7 2020318a branch timer_single_step 
+0114 da60499f arg mem_device_send_updata_le_param_timer ,regc 
+0115 da401f57 arg le_l2cap_tx_update_req ,regb 
+0116 2020318a branch timer_single_step 
 
 p_device_key_init:
-00c8 df200006 arg 6 ,loopcnt 
-00c9 da204a0c arg mem_device_key_config ,rega 
+0117 df200006 arg 6 ,loopcnt 
+0118 da204a0c arg mem_device_key_config ,rega 
 
 p_device_key_init_lp1:
-00ca e8408011 ifetcht 1 ,rega 
-00cb 20403f56 call device_gpio_config_input_pu 
-00cc 1a20a201 increase key_conf_struct_len ,rega 
-00cd c20000ca loop p_device_key_init_lp1 
+0119 e8408011 ifetcht 1 ,rega 
+011a 20403f56 call device_gpio_config_input_pu 
+011b 1a20a201 increase key_conf_struct_len ,rega 
+011c c2000119 loop p_device_key_init_lp1 
 
 p_device_key_init_end:
-00ce 20600000 rtn 
+011d 20600000 rtn 
 
 p_device_keyscan_process:
-00cf 204000d8 call p_device_key 
-00d0 24740000 nrtn user 
-00d1 c0008163 beq device_num1_key ,p_device_led_power_keydown_blink 
-00d2 c0010163 beq device_num2_key ,p_device_led_power_keydown_blink 
-00d3 c0020163 beq device_num3_key ,p_device_led_power_keydown_blink 
-00d4 c0040163 beq device_num4_key ,p_device_led_power_keydown_blink 
-00d5 c0080163 beq device_num5_key ,p_device_led_power_keydown_blink 
-00d6 c0100163 beq device_num6_key ,p_device_led_power_keydown_blink 
-00d7 20600000 rtn 
+011e 20400127 call p_device_key 
+011f 24740000 nrtn user 
+0120 79200004 set1 mark_red_led_power_need_on ,mark 
+0121 704a630b jam timer_1_1_s ,mem_device_led_power_led_on_timer 
+0122 c5010125 bmark1 mark_input_password_error_to_much ,p_device_keysan_error_to_much_effect 
+0123 204001ad call p_device_led_power_keydown_blink 
+0124 202002a8 branch p_password_input_handler 
+
+p_device_keysan_error_to_much_effect:
+0125 204001b3 call p_device_led_power_password_error_blink 
+0126 202002a8 branch p_password_input_handler 
 
 p_device_key:
-00d8 20407e56 call disable_user 
-00d9 204000e2 call p_device_check_key_gpio 
-00da 1a227e00 copy rega ,pdata 
-00db 6848ca1b fetcht 1 ,mem_device_key_last 
-00dc 67e0ca1b store 1 ,mem_device_key_last 
-00dd 67e0ca1a store 1 ,mem_device_key 
-00de 9842fe00 ixor temp ,pdata 
-00df 1fe67c00 sub pdata ,0 ,null 
-00e0 20628000 rtn zero 
-00e1 20207e54 branch enable_user 
+0127 20407e56 call disable_user 
+0128 20400131 call p_device_check_key_gpio 
+0129 1a227e00 copy rega ,pdata 
+012a 6848ca1b fetcht 1 ,mem_device_key_last 
+012b 67e0ca1b store 1 ,mem_device_key_last 
+012c 67e0ca1a store 1 ,mem_device_key 
+012d 9842fe00 ixor temp ,pdata 
+012e 1fe67c00 sub pdata ,0 ,null 
+012f 20628000 rtn zero 
+0130 20207e54 branch enable_user 
 
 p_device_check_key_gpio:
-00e2 da200000 arg 0 ,rega 
-00e3 204000eb call p_device_check_key1_gpio 
-00e4 204000f1 call p_device_check_key2_gpio 
-00e5 204000f7 call p_device_check_key3_gpio 
-00e6 204000fd call p_device_check_key4_gpio 
-00e7 20400105 call p_device_check_key5_gpio 
-00e8 2040010d call p_device_check_key6_gpio 
-00e9 1a227e00 copy rega ,pdata 
-00ea 20600000 rtn 
+0131 da200000 arg 0 ,rega 
+0132 2040013a call p_device_check_key1_gpio 
+0133 20400140 call p_device_check_key2_gpio 
+0134 20400146 call p_device_check_key3_gpio 
+0135 2040014c call p_device_check_key4_gpio 
+0136 20400154 call p_device_check_key5_gpio 
+0137 2040015c call p_device_check_key6_gpio 
+0138 1a227e00 copy rega ,pdata 
+0139 20600000 rtn 
 
 p_device_check_key1_gpio:
-00eb 704a1800 jam device_num1_key_index ,mem_device_key_temp 
-00ec 6848ca0c fetcht 1 ,mem_device_key1_gpio 
-00ed 6fe0ca12 fetch 1 ,mem_device_key1_press_status 
-00ee 20400115 call p_device_check_key_connect_gnd 
-00ef 67e0ca12 store 1 ,mem_device_key1_press_status 
-00f0 20600000 rtn 
+013a 704a1800 jam device_num1_key_index ,mem_device_key_temp 
+013b 6848ca0c fetcht 1 ,mem_device_key1_gpio 
+013c 6fe0ca12 fetch 1 ,mem_device_key1_press_status 
+013d 20400164 call p_device_check_key_connect_gnd 
+013e 67e0ca12 store 1 ,mem_device_key1_press_status 
+013f 20600000 rtn 
 
 p_device_check_key2_gpio:
-00f1 704a1801 jam device_num2_key_index ,mem_device_key_temp 
-00f2 6848ca0d fetcht 1 ,mem_device_key2_gpio 
-00f3 6fe0ca13 fetch 1 ,mem_device_key2_press_status 
-00f4 20400115 call p_device_check_key_connect_gnd 
-00f5 67e0ca13 store 1 ,mem_device_key2_press_status 
-00f6 20600000 rtn 
+0140 704a1801 jam device_num2_key_index ,mem_device_key_temp 
+0141 6848ca0d fetcht 1 ,mem_device_key2_gpio 
+0142 6fe0ca13 fetch 1 ,mem_device_key2_press_status 
+0143 20400164 call p_device_check_key_connect_gnd 
+0144 67e0ca13 store 1 ,mem_device_key2_press_status 
+0145 20600000 rtn 
 
 p_device_check_key3_gpio:
-00f7 704a1802 jam device_num3_key_index ,mem_device_key_temp 
-00f8 6848ca0e fetcht 1 ,mem_device_key3_gpio 
-00f9 6fe0ca14 fetch 1 ,mem_device_key3_press_status 
-00fa 20400115 call p_device_check_key_connect_gnd 
-00fb 67e0ca14 store 1 ,mem_device_key3_press_status 
-00fc 20600000 rtn 
+0146 704a1802 jam device_num3_key_index ,mem_device_key_temp 
+0147 6848ca0e fetcht 1 ,mem_device_key3_gpio 
+0148 6fe0ca14 fetch 1 ,mem_device_key3_press_status 
+0149 20400164 call p_device_check_key_connect_gnd 
+014a 67e0ca14 store 1 ,mem_device_key3_press_status 
+014b 20600000 rtn 
 
 p_device_check_key4_gpio:
-00fd 704a1803 jam device_num4_key_index ,mem_device_key_temp 
-00fe 6fe0ca15 fetch 1 ,mem_device_key4_press_status 
-00ff 1fe22600 copy pdata ,regc 
-0100 6848ca0f fetcht 1 ,mem_device_key4_gpio 
+014c 704a1803 jam device_num4_key_index ,mem_device_key_temp 
+014d 6fe0ca15 fetch 1 ,mem_device_key4_press_status 
+014e 1fe22600 copy pdata ,regc 
+014f 6848ca0f fetcht 1 ,mem_device_key4_gpio 
 
 p_device_3io6key_key4_check:
-0101 2040011f call p_device_3io6key_check 
-0102 67e0ca15 store 1 ,mem_device_key4_press_status 
-0103 6848ca0f fetcht 1 ,mem_device_key4_gpio 
-0104 20203f56 branch device_gpio_config_input_pu 
+0150 2040016e call p_device_3io6key_check 
+0151 67e0ca15 store 1 ,mem_device_key4_press_status 
+0152 6848ca0f fetcht 1 ,mem_device_key4_gpio 
+0153 20203f56 branch device_gpio_config_input_pu 
 
 p_device_check_key5_gpio:
-0105 704a1804 jam device_num5_key_index ,mem_device_key_temp 
-0106 6fe0ca16 fetch 1 ,mem_device_key5_press_status 
-0107 1fe22600 copy pdata ,regc 
-0108 6848ca10 fetcht 1 ,mem_device_key5_gpio 
+0154 704a1804 jam device_num5_key_index ,mem_device_key_temp 
+0155 6fe0ca16 fetch 1 ,mem_device_key5_press_status 
+0156 1fe22600 copy pdata ,regc 
+0157 6848ca10 fetcht 1 ,mem_device_key5_gpio 
 
 p_device_3io6key_key5_check:
-0109 2040011f call p_device_3io6key_check 
-010a 67e0ca16 store 1 ,mem_device_key5_press_status 
-010b 6848ca10 fetcht 1 ,mem_device_key5_gpio 
-010c 20203f56 branch device_gpio_config_input_pu 
+0158 2040016e call p_device_3io6key_check 
+0159 67e0ca16 store 1 ,mem_device_key5_press_status 
+015a 6848ca10 fetcht 1 ,mem_device_key5_gpio 
+015b 20203f56 branch device_gpio_config_input_pu 
 
 p_device_check_key6_gpio:
-010d 704a1805 jam device_num6_key_index ,mem_device_key_temp 
-010e 6fe0ca17 fetch 1 ,mem_device_key6_press_status 
-010f 1fe22600 copy pdata ,regc 
-0110 6848ca11 fetcht 1 ,mem_device_key6_gpio 
+015c 704a1805 jam device_num6_key_index ,mem_device_key_temp 
+015d 6fe0ca17 fetch 1 ,mem_device_key6_press_status 
+015e 1fe22600 copy pdata ,regc 
+015f 6848ca11 fetcht 1 ,mem_device_key6_gpio 
 
 p_device_3io6key_key6_check:
-0111 2040011f call p_device_3io6key_check 
-0112 67e0ca17 store 1 ,mem_device_key6_press_status 
-0113 6848ca11 fetcht 1 ,mem_device_key6_gpio 
-0114 20203f56 branch device_gpio_config_input_pu 
+0160 2040016e call p_device_3io6key_check 
+0161 67e0ca17 store 1 ,mem_device_key6_press_status 
+0162 6848ca11 fetcht 1 ,mem_device_key6_gpio 
+0163 20203f56 branch device_gpio_config_input_pu 
 
 p_device_check_key_connect_gnd:
-0115 1fe3fe00 lshift pdata ,pdata 
-0116 1fe22400 copy pdata ,regb 
-0117 20406059 call gpio_get_bit 
-0118 7920a400 setflag true ,0 ,regb 
+0164 1fe3fe00 lshift pdata ,pdata 
+0165 1fe22400 copy pdata ,regb 
+0166 20406059 call gpio_get_bit 
+0167 7920a400 setflag true ,0 ,regb 
 
 p_device_check_key_connect_gnd2:
-0119 1a417e07 and regb ,0x07 ,pdata 
-011a 6848ca18 fetcht 1 ,mem_device_key_temp 
-011b 18420e00 copy temp ,queue 
-011c c003c193 beq 0x07 ,device_key_press 
-011d c0004191 beq 0x00 ,device_key_release 
-011e 20600000 rtn 
+0168 1a417e07 and regb ,0x07 ,pdata 
+0169 6848ca18 fetcht 1 ,mem_device_key_temp 
+016a 18420e00 copy temp ,queue 
+016b c003c193 beq 0x07 ,device_key_press 
+016c c0004191 beq 0x00 ,device_key_release 
+016d 20600000 rtn 
 
 p_device_3io6key_check:
-011f 1a627e00 copy regc ,pdata 
-0120 67e0ca19 store 1 ,mem_device_key_status 
-0121 1fe3fe00 lshift pdata ,pdata 
-0122 1fe22400 copy pdata ,regb 
-0123 18422600 copy temp ,regc 
-0124 20403f54 call device_gpio_config_input_pd 
-0125 1a620400 copy regc ,temp 
-0126 20406059 call gpio_get_bit 
-0127 7d20a400 nsetflag true ,0 ,regb 
-0128 20200119 branch p_device_check_key_connect_gnd2 
+016e 1a627e00 copy regc ,pdata 
+016f 67e0ca19 store 1 ,mem_device_key_status 
+0170 1fe3fe00 lshift pdata ,pdata 
+0171 1fe22400 copy pdata ,regb 
+0172 18422600 copy temp ,regc 
+0173 20403f54 call device_gpio_config_input_pd 
+0174 1a620400 copy regc ,temp 
+0175 20406059 call gpio_get_bit 
+0176 7d20a400 nsetflag true ,0 ,regb 
+0177 20200168 branch p_device_check_key_connect_gnd2 
 
 p_device_led_init:
-0129 da200000 arg 0 ,rega 
-012a 204061d1 call pwm_init 
-012b 6fe34980 fetch 6 ,mem_led_power_pwm_conf 
-012c 67e3095c store 6 ,mem_pdatatemp 
-012d 204061f8 call pwm_out_set 
-012e 6fe14980 fetch 2 ,mem_led_power_pwm_conf 
-012f 793ffe0c set0 12 ,pdata 
-0130 20406216 call pwm_disable 
-0131 6fe34986 fetch 6 ,mem_led_action_pwm_conf 
-0132 67e3095c store 6 ,mem_pdatatemp 
-0133 204061f8 call pwm_out_set 
-0134 6fe14986 fetch 2 ,mem_led_action_pwm_conf 
-0135 793ffe0c set0 12 ,pdata 
-0136 20206216 branch pwm_disable 
+0178 da200000 arg 0 ,rega 
+0179 204061d1 call pwm_init 
+017a 6fe34980 fetch 6 ,mem_led_power_pwm_conf 
+017b 67e3095c store 6 ,mem_pdatatemp 
+017c 204061f8 call pwm_out_set 
+017d 6fe14980 fetch 2 ,mem_led_power_pwm_conf 
+017e 793ffe0c set0 12 ,pdata 
+017f 20406216 call pwm_disable 
+0180 6fe34986 fetch 6 ,mem_led_action_pwm_conf 
+0181 67e3095c store 6 ,mem_pdatatemp 
+0182 204061f8 call pwm_out_set 
+0183 6fe14986 fetch 2 ,mem_led_action_pwm_conf 
+0184 793ffe0c set0 12 ,pdata 
+0185 20206216 branch pwm_disable 
 
 p_device_led_power_on:
-0137 6fe34980 fetch 6 ,mem_led_power_pwm_conf 
-0138 67e3095c store 6 ,mem_pdatatemp 
-0139 202061f8 branch pwm_out_set 
+0186 6fe34980 fetch 6 ,mem_led_power_pwm_conf 
+0187 67e3095c store 6 ,mem_pdatatemp 
+0188 202061f8 branch pwm_out_set 
 
 p_device_led_power_off:
-013a 6fe14980 fetch 2 ,mem_led_power_pwm_conf 
-013b 20206216 branch pwm_disable 
+0189 6fe14980 fetch 2 ,mem_led_power_pwm_conf 
+018a 20206216 branch pwm_disable 
 
 p_device_led_action_on:
-013c 6fe34986 fetch 6 ,mem_led_action_pwm_conf 
-013d 67e3095c store 6 ,mem_pdatatemp 
-013e 202061f8 branch pwm_out_set 
+018b 6fe34986 fetch 6 ,mem_led_action_pwm_conf 
+018c 67e3095c store 6 ,mem_pdatatemp 
+018d 202061f8 branch pwm_out_set 
 
 p_device_led_action_off:
-013f 6fe14986 fetch 2 ,mem_led_action_pwm_conf 
-0140 20206216 branch pwm_disable 
-
-p_device_led_power_blink_timer:
-0141 6fe0c98c fetch 1 ,mem_device_led_power_blink_enable 
-0142 207a0000 rtn blank 
-
-p_device_led_power_type_blink_timer:
-0143 da604993 arg mem_device_led_power_blink_timer ,regc 
-0144 da400146 arg p_device_led_power_type_blink ,regb 
-0145 2020318a branch timer_single_step 
+018e 58000107 setarg device_led_action_off_seeting 
+018f 20206216 branch pwm_disable 
 
 p_device_led_power_type_blink:
-0146 6fe0c992 fetch 1 ,mem_device_led_power_blink_timer_init 
-0147 67e0c993 store 1 ,mem_device_led_power_blink_timer 
-0148 6fe0c995 fetch 1 ,mem_device_led_power_blink_count_limited 
-0149 203a014e branch p_device_led_power_blink_count_no_limited ,blank 
-014a 6fe0c994 fetch 1 ,mem_device_led_power_blink_count 
-014b 1fe0ffff increase -1 ,pdata 
-014c 67e0c994 store 1 ,mem_device_led_power_blink_count 
-014d 203a015c branch p_device_led_power_blink_check ,blank 
+0190 6fe0c992 fetch 1 ,mem_device_led_power_blink_timer_init 
+0191 67e0c993 store 1 ,mem_device_led_power_blink_timer 
+0192 6fe0c995 fetch 1 ,mem_device_led_power_blink_count_limited 
+0193 203a0198 branch p_device_led_power_blink_count_no_limited ,blank 
+0194 6fe0c994 fetch 1 ,mem_device_led_power_blink_count 
+0195 1fe0ffff increase -1 ,pdata 
+0196 67e0c994 store 1 ,mem_device_led_power_blink_count 
+0197 203a01a6 branch p_device_led_power_blink_check ,blank 
 
 p_device_led_power_blink_count_no_limited:
-014e 6fe0c98e fetch 1 ,mem_device_led_power_state 
-014f c0008157 beq on ,p_device_led_power_led_off 
-0150 c0000152 beq off ,p_device_led_power_led_on 
-0151 20600000 rtn 
+0198 6fe0c98e fetch 1 ,mem_device_led_power_state 
+0199 c00081a1 beq on ,p_device_led_power_led_off 
+019a c000019c beq off ,p_device_led_power_led_on 
+019b 20600000 rtn 
 
 p_device_led_power_led_on:
-0152 70498e01 jam on ,mem_device_led_power_state 
-0153 20200137 branch p_device_led_power_on 
+019c 70498e01 jam on ,mem_device_led_power_state 
+019d 20200186 branch p_device_led_power_on 
 
 p_device_led_power_blink_off:
-0154 70499300 jam 0 ,mem_device_led_power_blink_timer 
-0155 70499400 jam 0 ,mem_device_led_power_blink_count 
-0156 70499500 jam 0 ,mem_device_led_power_blink_count_limited 
+019e 70499300 jam 0 ,mem_device_led_power_blink_timer 
+019f 70499400 jam 0 ,mem_device_led_power_blink_count 
+01a0 70499500 jam 0 ,mem_device_led_power_blink_count_limited 
 
 p_device_led_power_led_off:
-0157 6fe0c994 fetch 1 ,mem_device_led_power_blink_count 
-0158 243a015a nbranch p_device_led_power_off_wait_blink_over ,blank 
-0159 70498c00 jam 0 ,mem_device_led_power_blink_enable 
+01a1 6fe0c994 fetch 1 ,mem_device_led_power_blink_count 
+01a2 243a01a4 nbranch p_device_led_power_off_wait_blink_over ,blank 
+01a3 70498c00 jam 0 ,mem_device_led_power_blink_enable 
 
 p_device_led_power_off_wait_blink_over:
-015a 70498e00 jam off ,mem_device_led_power_state 
-015b 2020013a branch p_device_led_power_off 
+01a4 70498e00 jam off ,mem_device_led_power_state 
+01a5 20200189 branch p_device_led_power_off 
 
 p_device_led_power_blink_check:
-015c 20200154 branch p_device_led_power_blink_off 
+01a6 2020019e branch p_device_led_power_blink_off 
 
 p_device_led_power_always_blink:
-015d 70499500 jam 0 ,mem_device_led_power_blink_count_limited 
-015e 70499205 jam 5 ,mem_device_led_power_blink_timer_init 
-015f 70499401 jam 1 ,mem_device_led_power_blink_count 
+01a7 70499500 jam 0 ,mem_device_led_power_blink_count_limited 
+01a8 70499205 jam 5 ,mem_device_led_power_blink_timer_init 
+01a9 70499401 jam 1 ,mem_device_led_power_blink_count 
 
 p_device_led_power_blink_enable:
-0160 70499301 jam 1 ,mem_device_led_power_blink_timer 
-0161 70498c01 jam on ,mem_device_led_power_blink_enable 
-0162 20600000 rtn 
+01aa 70499301 jam 1 ,mem_device_led_power_blink_timer 
+01ab 70498c01 jam on ,mem_device_led_power_blink_enable 
+01ac 20600000 rtn 
 
 p_device_led_power_keydown_blink:
-0163 6fe0ca1a fetch 1 ,mem_device_key 
-0164 207a0000 rtn blank 
-0165 70499402 jam 2 ,mem_device_led_power_blink_count 
-0166 70499201 jam 1 ,mem_device_led_power_blink_timer_init 
-0167 70499501 jam 1 ,mem_device_led_power_blink_count_limited 
-0168 20200160 branch p_device_led_power_blink_enable 
+01ad 6fe0ca1a fetch 1 ,mem_device_key 
+01ae 207a0000 rtn blank 
+01af 70499402 jam 2 ,mem_device_led_power_blink_count 
+01b0 70499201 jam 1 ,mem_device_led_power_blink_timer_init 
+01b1 70499501 jam 1 ,mem_device_led_power_blink_count_limited 
+01b2 202001aa branch p_device_led_power_blink_enable 
 
 p_device_led_power_password_error_blink:
-0169 7049940a jam 10 ,mem_device_led_power_blink_count 
-016a 70499201 jam 1 ,mem_device_led_power_blink_timer_init 
-016b 70499501 jam 1 ,mem_device_led_power_blink_count_limited 
-016c 20200160 branch p_device_led_power_blink_enable 
+01b3 7049940a jam 10 ,mem_device_led_power_blink_count 
+01b4 70499201 jam 1 ,mem_device_led_power_blink_timer_init 
+01b5 70499501 jam 1 ,mem_device_led_power_blink_count_limited 
+01b6 202001aa branch p_device_led_power_blink_enable 
 
 p_device_charge_gpio_init:
-016d 6848ca2e fetcht 1 ,mem_device_charge_en_gpio 
-016e 20206069 branch gpio_config_output 
+01b7 6848ca2a fetcht 1 ,mem_device_charge_en_gpio 
+01b8 20206069 branch gpio_config_output 
 
 p_device_charge_enable:
-016f 6848ca2e fetcht 1 ,mem_device_charge_en_gpio 
-0170 20206069 branch gpio_out_active 
+01b9 6848ca2a fetcht 1 ,mem_device_charge_en_gpio 
+01ba 20206069 branch gpio_out_active 
 
 p_device_charge_disable:
-0171 6848ca2e fetcht 1 ,mem_device_charge_en_gpio 
-0172 20206065 branch gpio_out_inactive 
+01bb 6848ca2a fetcht 1 ,mem_device_charge_en_gpio 
+01bc 20206065 branch gpio_out_inactive 
 
 p_device_uarta_init:
-0173 6ff08060 fetch 1 ,core_uart_ctrl 
-0174 793ffe00 set0 bit_uart_control_enable ,pdata 
-0175 67f08060 store 1 ,core_uart_ctrl 
-0176 6fe44a1c fetch 8 ,mem_device_uart_rx_buffer 
-0177 20405eb0 call uarta_init_dma_mem 
-0178 6fe14a24 fetch uart_baud_len ,mem_device_uarta_baud_rate 
-0179 20405ec4 call uarta_init_baud_rate 
-017a 20405ed7 call uart_clock_select_main_freq_crystal 
-017b 6fe0ca2f fetch 1 ,mem_device_uart_tx_gpio 
-017c d8400008 arg gpcfg_uart_txd ,temp 
-017d 20406093 call gpio_config_function_int 
-017e 6fe0ca30 fetch 1 ,mem_device_uart_rx_gpio 
-017f d8400049 arg gpcfg_uart_rxd | gpcfg_pullup ,temp 
-0180 20406093 call gpio_config_function_int 
-0181 d8400081 arg fun_uart_control_enable | fun_uart_control_setting_rate_baud ,temp 
-0182 60588060 storet 1 ,core_uart_ctrl 
-0183 20600000 rtn 
+01bd 6ff08060 fetch 1 ,core_uart_ctrl 
+01be 793ffe00 set0 bit_uart_control_enable ,pdata 
+01bf 67f08060 store 1 ,core_uart_ctrl 
+01c0 6fe44a1c fetch 8 ,mem_device_uart_rx_buffer 
+01c1 20405eb0 call uarta_init_dma_mem 
+01c2 6fe14a24 fetch uart_baud_len ,mem_device_uarta_baud_rate 
+01c3 20405ec4 call uarta_init_baud_rate 
+01c4 20405ed7 call uart_clock_select_main_freq_crystal 
+01c5 6fe0ca2b fetch 1 ,mem_device_uart_tx_gpio 
+01c6 d8400008 arg gpcfg_uart_txd ,temp 
+01c7 20406093 call gpio_config_function_int 
+01c8 6fe0ca2c fetch 1 ,mem_device_uart_rx_gpio 
+01c9 d8400049 arg gpcfg_uart_rxd | gpcfg_pullup ,temp 
+01ca 20406093 call gpio_config_function_int 
+01cb d8400081 arg fun_uart_control_enable | fun_uart_control_setting_rate_baud ,temp 
+01cc 60588060 storet 1 ,core_uart_ctrl 
+01cd 20600000 rtn 
 
 p_device_uarta_check_hci_complete:
-0184 6ff0810b fetch 1 ,core_uart_status 
-0185 c3810000 rtnbit1 uart_status_rx_fifo_empty 
-0186 20405ef7 call uarta_prepare_rx 
-0187 d84002ce arg length_pc_data ,temp 
-0188 6ff10112 fetch 2 ,core_uart_rxitems 
-0189 98467c00 isub temp ,null 
-018a 24610000 nrtn positive 
-018b 70096400 jam 0 ,mem_temp 
-018c df2002ce arg length_pc_data ,loopcnt 
-018d d8a00cc4 arg mem_pc_communication_data_start ,contw 
+01ce 6ff0810b fetch 1 ,core_uart_status 
+01cf c3810000 rtnbit1 uart_status_rx_fifo_empty 
+01d0 20405ef7 call uarta_prepare_rx 
+01d1 d84002ce arg length_pc_data ,temp 
+01d2 6ff10112 fetch 2 ,core_uart_rxitems 
+01d3 98467c00 isub temp ,null 
+01d4 24610000 nrtn positive 
+01d5 70096400 jam 0 ,mem_temp 
+01d6 df2002ce arg length_pc_data ,loopcnt 
+01d7 d8a00cc4 arg mem_pc_communication_data_start ,contw 
 
 p_device_uarta_get_pc_data_loop:
-018e efe08003 ifetch 1 ,contru 
-018f e7e08005 istore 1 ,contw 
-0190 c200018e loop p_device_uarta_get_pc_data_loop 
-0191 20405f07 call uarta_clear_current_rx 
-0192 58000000 setarg 0 
-0193 df2002cd arg length_pc_data_checksum ,loopcnt 
-0194 d8c00cc4 arg mem_pc_communication_data_start ,contr 
-0195 20407e62 call cal_sum 
-0196 1fe17eff and_into 0xff ,pdata 
-0197 68488f91 fetcht 1 ,mem_pc_checksum 
-0198 98467c00 isub temp ,null 
-0199 24628000 nrtn zero 
-019a 204001ae call p_device_pc_rcv_eeprom_store_info 
-019b df2002ce arg length_pc_data ,loopcnt 
-019c d8a009f6 arg mem_communication_data_start ,contw 
-019d d8c00cc4 arg mem_pc_communication_data_start ,contr 
-019e 20407d52 call memcpy_fast 
-019f 202001a0 branch p_device_uarta_transmit_succ 
+01d8 efe08003 ifetch 1 ,contru 
+01d9 e7e08005 istore 1 ,contw 
+01da c20001d8 loop p_device_uarta_get_pc_data_loop 
+01db 20405f07 call uarta_clear_current_rx 
+01dc 58000000 setarg 0 
+01dd df2002cd arg length_pc_data_checksum ,loopcnt 
+01de d8c00cc4 arg mem_pc_communication_data_start ,contr 
+01df 20407e62 call cal_sum 
+01e0 1fe17eff and_into 0xff ,pdata 
+01e1 68488f91 fetcht 1 ,mem_pc_checksum 
+01e2 98467c00 isub temp ,null 
+01e3 24628000 nrtn zero 
+01e4 204001fa call p_device_pc_rcv_eeprom_store_info 
+01e5 df2002ce arg length_pc_data ,loopcnt 
+01e6 d8a009f6 arg mem_communication_data_start ,contw 
+01e7 d8c00cc4 arg mem_pc_communication_data_start ,contr 
+01e8 20407d52 call memcpy_fast 
+01e9 204001ec call p_device_uarta_transmit_succ 
+01ea 20400392 call p_check_is_data_burned 
+01eb 2020005a branch p_device_modified_name 
 
 p_device_uarta_transmit_succ:
-01a0 df200004 arg 4 ,loopcnt 
-01a1 da204a26 arg mem_device_uart_transmit_succ ,rega 
+01ec df200004 arg 4 ,loopcnt 
+01ed da204a26 arg mem_device_uart_transmit_succ ,rega 
 
 p_device_uarta_transmit:
-01a2 20407cc8 call push_stack 
-01a3 20405f0f call uarta_prepare_tx_register_push 
-01a4 1a220c00 copy rega ,contr 
-01a5 20405f1f call uart_copy_tx_bytes_fast 
-01a6 20405f13 call uarta_send_register_pop 
-01a7 20207cd4 branch pop_stack 
+01ee 20407cc8 call push_stack 
+01ef 20405f0f call uarta_prepare_tx_register_push 
+01f0 1a220c00 copy rega ,contr 
+01f1 20405f1f call uart_copy_tx_bytes_fast 
+01f2 20405f13 call uarta_send_register_pop 
+01f3 20207cd4 branch pop_stack 
 
 p_device_power_on_eeprom_load_info:
-01a8 58000cc4 setarg mem_communication_data_end 
-01a9 d84009f6 arg mem_communication_data_start ,temp 
-01aa 98460400 isub temp ,temp 
-01ab da2009f6 arg mem_communication_data_start ,rega 
-01ac da400000 arg device_info_eeprom_offect ,regb 
-01ad 20205ddc branch iicd_read_eep_data 
+01f4 58000cc4 setarg mem_communication_data_end 
+01f5 d84009f6 arg mem_communication_data_start ,temp 
+01f6 98460400 isub temp ,temp 
+01f7 da2009f6 arg mem_communication_data_start ,rega 
+01f8 da400000 arg device_info_eeprom_offect ,regb 
+01f9 20205ddc branch iicd_read_eep_data 
 
 p_device_pc_rcv_eeprom_store_info:
-01ae 58000f92 setarg mem_pc_communication_data_end 
-01af d8400cc4 arg mem_pc_communication_data_start ,temp 
-01b0 98460400 isub temp ,temp 
-01b1 da200cc4 arg mem_pc_communication_data_start ,rega 
-01b2 da400000 arg device_info_eeprom_offect ,regb 
-01b3 20205dce branch iicd_write_protect_eep_data 
+01fa 58000f92 setarg mem_pc_communication_data_end 
+01fb d8400cc4 arg mem_pc_communication_data_start ,temp 
+01fc 98460400 isub temp ,temp 
+01fd da200cc4 arg mem_pc_communication_data_start ,rega 
+01fe da400000 arg device_info_eeprom_offect ,regb 
+01ff 20205dce branch iicd_write_protect_eep_data 
+
+p_device_store_use_for_free_info:
+0200 6fe08cc1 fetch 1 ,mem_probation_cooling_period_store 
+0201 207a0000 rtn blank 
+0202 d8400002 arg 2 ,temp 
+0203 da204a6c arg mem_charge_for_free_cooling_count ,rega 
+0204 da400300 arg device_charge_cooling_info_offset ,regb 
+0205 20205dce branch iicd_write_protect_eep_data 
+
+p_device_load_use_for_free_info:
+0206 6fe08cc1 fetch 1 ,mem_probation_cooling_period_store 
+0207 207a0000 rtn blank 
+0208 d8400002 arg 2 ,temp 
+0209 da204a6c arg mem_charge_for_free_cooling_count ,rega 
+020a da400300 arg device_charge_cooling_info_offset ,regb 
+020b 20405ddc call iicd_read_eep_data 
+020c 58008ca0 setarg timer_1_hour 
+020d 68494a6c fetcht 2 ,mem_charge_for_free_cooling_count 
+020e 98467c00 isub temp ,null 
+020f 24610000 nrtn positive 
+0210 18427e00 copy temp ,pdata 
+0211 207a0000 rtn blank 
+0212 704a7001 jam 1 ,mem_charge_for_free_not_cooling 
+0213 704a6458 jam timer_1_min ,mem_device_store_info_timer 
+0214 20600000 rtn 
+
+p_device_store_charge_package_status_info:
+0215 d840000f arg 15 ,temp 
+0216 da204a78 arg mem_password_now_state + 1 ,rega 
+0217 da400310 arg device_charge_package_status_offset ,regb 
+0218 20205dce branch iicd_write_protect_eep_data 
+
+p_device_load_charge_package_status_info:
+0219 d840000f arg 15 ,temp 
+021a da204a78 arg mem_password_now_state + 1 ,rega 
+021b da400310 arg device_charge_package_status_offset ,regb 
+021c 20405ddc call iicd_read_eep_data 
+021d 6fe0ca78 fetch 1 ,mem_password_now_state + 1 
+021e d8400010 arg 16 ,temp 
+021f 98467c00 isub temp ,null 
+0220 24610000 nrtn positive 
+0221 6fe44a87 fetch 8 ,mem_password_now_state_init 
+0222 67e44a77 store 8 ,mem_password_now_state 
+0223 67e44a7f store 8 ,mem_password_now_state + 8 
+0224 20600000 rtn 
+
+p_device_store_charge_time_info:
+0225 d8400004 arg 4 ,temp 
+0226 da204a68 arg mem_device_charge_control_count ,rega 
+0227 da40030a arg device_charge_time_info_offset ,regb 
+0228 20205dce branch iicd_write_protect_eep_data 
+
+p_device_load_charge_time_info:
+0229 d8400004 arg 4 ,temp 
+022a da204a68 arg mem_device_charge_control_count ,rega 
+022b da40030a arg device_charge_time_info_offset ,regb 
+022c 20405ddc call iicd_read_eep_data 
+022d 5800ffff setarg 0xffff 
+022e 68494a6a fetcht 2 ,mem_device_charge_control_count + 2 
+022f 98467c00 isub temp ,null 
+0230 2022823d branch p_device_unsave_charge_time_handler ,zero 
+0231 6fe1ca68 fetch 3 ,mem_device_charge_control_count 
+0232 1fe67e00 sub pdata ,0 ,pdata 
+0233 207a0000 rtn blank 
+0234 6fe0ca6b fetch 1 ,mem_recover_times_from_power_off 
+0235 207a0000 rtn blank 
+0236 1fe0ffff pincrease -1 
+0237 67e0ca6b store 1 ,mem_recover_times_from_power_off 
+0238 205a0242 call p_device_set0_charge_time ,blank 
+0239 20400225 call p_device_store_charge_time_info 
+023a 58000258 setarg timer_1_min 
+023b 67e14a66 store 2 ,mem_device_store_charge_time_timer 
+023c 20200247 branch p_turn_on_green_light_and_start_charge + 1 
+
+p_device_unsave_charge_time_handler:
+023d 58000000 setarg 0 
+023e 67e1ca68 store 3 ,mem_device_charge_control_count 
+023f 6fe08a1b fetch 1 ,mem_times_when_power_recover 
+0240 67e0ca6b store 1 ,mem_recover_times_from_power_off 
+0241 20600000 rtn 
+
+p_device_set0_charge_time:
+0242 58000000 setarg 0 
+0243 67e1ca68 store 3 ,mem_device_charge_control_count 
+0244 67e0ca6b store 1 ,mem_recover_times_from_power_off 
+0245 20600000 rtn 
+
+p_turn_on_green_light_and_start_charge:
+0246 67e1ca68 store 3 ,mem_device_charge_control_count 
+0247 704a6e01 jam 1 ,mem_in_charge_flag 
+0248 2040018b call p_device_led_action_on 
+0249 202001b9 branch p_device_charge_enable 
+
+p_use_for_free_5_min:
+024a 6fe0ca6e fetch 1 ,mem_in_charge_flag 
+024b 247a0000 nrtn blank 
+024c c6010000 rtnmark1 mark_input_password_error_to_much 
+024d 6fe0ca70 fetch 1 ,mem_charge_for_free_not_cooling 
+024e 243a01b3 nbranch p_device_led_power_password_error_blink ,blank 
+024f 704a8f01 jam 1 ,mem_charge_for_free 
+0250 704a6f01 jam 1 ,mem_device_in_charge_probation 
+0251 68488cc0 fetcht 1 ,mem_probation_cooling_period 
+0252 58000258 setarg timer_1_min 
+0253 984ffe00 imul32 temp ,pdata 
+0254 67e14a6c store 2 ,mem_charge_for_free_cooling_count 
+0255 20400200 call p_device_store_use_for_free_info 
+0256 68488a1c fetcht 1 ,mem_probation_period 
+0257 58000258 setarg timer_1_min 
+0258 984ffe00 imul32 temp ,pdata 
+0259 20200246 branch p_turn_on_green_light_and_start_charge 
+
+p_use_for_free_1_min:
+025a 6fe0ca6e fetch 1 ,mem_in_charge_flag 
+025b 247a0000 nrtn blank 
+025c c6010000 rtnmark1 mark_input_password_error_to_much 
+025d 6fe08cc2 fetch 1 ,mem_unlock_left_times 
+025e 207a0000 rtn blank 
+025f 1fe0ffff pincrease -1 
+0260 67e08cc2 store 1 ,mem_unlock_left_times 
+0261 704a5101 jam 1 ,mem_use_free_1_min_start 
+0262 704a6f01 jam 1 ,mem_device_in_charge_probation 
+0263 58000258 setarg timer_1_min 
+0264 20200246 branch p_turn_on_green_light_and_start_charge 
+
+p_set_use_for_free_1_min_disable:
+0265 79200001 set1 mark_use_for_free_1_min_disable ,mark 
+0266 20600000 rtn 
+
+p_set_input_password_error_to_much:
+0267 79200002 set1 mark_input_password_error_to_much ,mark 
+0268 58002328 setarg timer_15_min 
+0269 67e14a61 store 2 ,mem_device_lock_count 
+026a 20600000 rtn 
+
+p_input_password_discorrect:
+026b 204001b3 call p_device_led_power_password_error_blink 
+026c 6fe0ca5b fetch 1 ,mem_input_error_num 
+026d 1fe0fe01 pincrease 1 
+026e 67e0ca5b store 1 ,mem_input_error_num 
+026f 6848ca5a fetcht 1 ,mem_input_error_num_init 
+0270 98467c00 isub temp ,null 
+0271 20210267 branch p_set_input_password_error_to_much ,positive 
+0272 20600000 rtn 
+
+p_input_password_correct:
+0273 204002d5 call p_update_password_state 
+0274 20400215 call p_device_store_charge_package_status_info 
+0275 58000000 setarg 0 
+0276 67e14a52 store 2 ,mem_device_rcvd_password_coordinate 
+0277 67e0ca5b store 1 ,mem_input_error_num 
+0278 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+
+p_input_password_correct_direct:
+0279 c0068286 beq package_24_hours ,p_package_24_hours 
+027a c0070289 beq package_30_min ,p_package_30_min 
+027b c007828b beq package_5_min ,p_package_5_min 
+027c d8408ca0 arg timer_1_hour ,temp 
+
+p_input_password_correct_next:
+027d 984ffe00 imul32 temp ,pdata 
+027e 20400246 call p_turn_on_green_light_and_start_charge 
+027f 20400225 call p_device_store_charge_time_info 
+0280 58000258 setarg timer_1_min 
+0281 67e14a66 store 2 ,mem_device_store_charge_time_timer 
+0282 6fe0ca6b fetch 1 ,mem_recover_times_from_power_off 
+0283 247a0000 nrtn blank 
+0284 67e14a66 store 2 ,mem_device_store_charge_time_timer 
+0285 20600000 rtn 
+
+p_package_24_hours:
+0286 58000018 setarg 24 
+0287 d8408ca0 arg timer_1_hour ,temp 
+0288 2020027d branch p_input_password_correct_next 
+
+p_package_30_min:
+0289 58004650 setarg timer_30_min 
+028a 20200246 branch p_turn_on_green_light_and_start_charge 
+
+p_package_5_min:
+028b 58000bb8 setarg timer_5_min 
+028c 20200246 branch p_turn_on_green_light_and_start_charge 
+
+p_cal_offset:
+028d 6fe0ca36 fetch 1 ,mem_password_user_input_ptr 
+028e 1fe67c05 sub pdata ,5 ,null 
+028f 2042829b call p_reset_offset ,zero 
+
+p_cal_offset_next:
+0290 da204a2d arg mem_password_user_input ,rega 
+0291 9a208a00 iadd rega ,contw 
+0292 20600000 rtn 
+
+p_offset_add1:
+0293 6fe0ca36 fetch 1 ,mem_password_user_input_ptr 
+0294 1fe0fe01 pincrease 1 
+0295 67e0ca36 store 1 ,mem_password_user_input_ptr 
+0296 20600000 rtn 
+
+p_offset_dec1:
+0297 6fe0ca36 fetch 1 ,mem_password_user_input_ptr 
+0298 1fe0ffff pincrease -1 
+0299 67e0ca36 store 1 ,mem_password_user_input_ptr 
+029a 20600000 rtn 
+
+p_reset_offset:
+029b 704a3600 jam 0 ,mem_password_user_input_ptr 
+029c 704a3701 jam 1 ,mem_password_input_full 
+029d 20600000 rtn 
+
+p_key_clear_input:
+029e 6fe0ca36 fetch 1 ,mem_password_user_input_ptr 
+029f 245a0297 ncall p_offset_dec1 ,blank 
+02a0 20400290 call p_cal_offset_next 
+02a1 20407ce8 call store_contw 
+02a2 20400297 call p_offset_dec1 
+02a3 20407ce2 call get_contw 
+02a4 58000000 setarg 0 
+02a5 202002b9 branch p_password_input_handler_next 
+
+p_rtn_after_unlock:
+02a6 704a7100 jam 0 ,mem_rtn_after_unlock 
+02a7 20600000 rtn 
+
+p_password_input_handler:
+02a8 6fe0ca1a fetch 1 ,mem_device_key 
+02a9 207a0000 rtn blank 
+02aa 6fe0ca36 fetch 1 ,mem_password_user_input_ptr 
+02ab 205a02e6 call p_record_user_input_start ,blank 
+02ac 6fe0ca38 fetch 1 ,mem_record_user_input_flag 
+02ad 245a02ea ncall p_record_user_input ,blank 
+02ae c6010000 rtnmark1 mark_input_password_error_to_much 
+02af 6fe0ca71 fetch 1 ,mem_rtn_after_unlock 
+02b0 243a02a6 nbranch p_rtn_after_unlock ,blank 
+02b1 6fe0ca1a fetch 1 ,mem_device_key 
+02b2 1fe67e20 sub pdata ,0x20 ,pdata 
+02b3 203a029e branch p_key_clear_input ,blank 
+02b4 2040028d call p_cal_offset 
+02b5 6fe0ca1a fetch 1 ,mem_device_key 
+02b6 c0020339 beq 0x04 ,p_set_key_data_3 
+02b7 c004033b beq 0x08 ,p_set_key_data_4 
+02b8 c008033d beq 0x10 ,p_set_key_data_5 
+
+p_password_input_handler_next:
+02b9 e7e08005 istore 1 ,contw 
+02ba 6fe0ca37 fetch 1 ,mem_password_input_full 
+02bb 243a02bd nbranch p_password_compare ,blank 
+02bc 20200293 branch p_offset_add1 
+
+p_password_compare:
+02bd 704a3700 jam 0 ,mem_password_input_full 
+02be d8c04a2d arg mem_password_user_input ,contr 
+02bf d8a04a57 arg mem_device_rcvd_password_from_user ,contw 
+02c0 204000fb call password_get 
+02c1 6849ca57 fetcht 3 ,mem_device_rcvd_password_from_user 
+02c2 58111111 setarg use_for_free_5_min 
+02c3 98467c00 isub temp ,null 
+02c4 2022824a branch p_use_for_free_5_min ,zero 
+02c5 da404a57 arg mem_device_rcvd_password_from_user ,regb 
+02c6 204000ef call p_device_password_list_search 
+02c7 203402cb branch p_password_found ,user 
+02c8 6fe0ca51 fetch 1 ,mem_use_free_1_min_start 
+02c9 243a0337 nbranch p_use_free_1_min_start ,blank 
+02ca 2020026b branch p_input_password_discorrect 
+
+p_password_found:
+02cb 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+02cc 207a0000 rtn blank 
+02cd 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+02ce 204002dd call p_read_password_state 
+02cf 6848ca5f fetcht 1 ,mem_device_rcvd_password_coordinate_y_temp 
+02d0 98467c00 isub temp ,null 
+02d1 20228273 branch p_input_password_correct ,zero 
+02d2 244102d5 ncall p_update_password_state ,positive 
+02d3 20400215 call p_device_store_charge_package_status_info 
+02d4 202001b3 branch p_device_led_power_password_error_blink 
+
+p_update_password_state:
+02d5 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+02d6 6848ca5f fetcht 1 ,mem_device_rcvd_password_coordinate_y_temp 
+02d7 18467c0f sub temp ,0x0f ,null 
+02d8 204282db call p_set_state_0 ,zero 
+02d9 18408401 add temp ,1 ,temp 
+02da 202002e1 branch p_write_password_state 
+
+p_set_state_0:
+02db d8400000 arg 0 ,temp 
+02dc 20600000 rtn 
+
+p_read_password_state:
+02dd da404a77 arg mem_password_now_state ,regb 
+02de 9a40a400 iadd regb ,regb 
+02df efe08012 ifetch 1 ,regb 
+02e0 20600000 rtn 
+
+p_write_password_state:
+02e1 da404a77 arg mem_password_now_state ,regb 
+02e2 9a408a00 iadd regb ,contw 
+02e3 18427e00 copy temp ,pdata 
+02e4 e7e08005 istore 1 ,contw 
+02e5 20600000 rtn 
+
+p_record_user_input_start:
+02e6 704a3801 jam 1 ,mem_record_user_input_flag 
+02e7 704a3900 jam 0 ,mem_record_user_input_ptr 
+02e8 78567c00 disable user2 
+02e9 20600000 rtn 
+
+p_record_user_input:
+02ea 280ffe02 isolate1 mark_input_password_error_to_much ,mark 
+02eb 202082f7 branch p_record_user_input_to_unlock_device ,true 
+02ec 6fe0ca39 fetch 1 ,mem_record_user_input_ptr 
+02ed 1fe67c07 sub pdata ,7 ,null 
+02ee 2022832e branch p_reset_user_input_ptr_handler ,zero 
+02ef da204a42 arg mem_password_user_input_record ,rega 
+02f0 9a208a00 iadd rega ,contw 
+02f1 6fe0ca1a fetch 1 ,mem_device_key 
+02f2 e7e08005 istore 1 ,contw 
+02f3 6fe0ca39 fetch 1 ,mem_record_user_input_ptr 
+02f4 1fe0fe01 pincrease 1 
+02f5 67e0ca39 store 1 ,mem_record_user_input_ptr 
+02f6 20600000 rtn 
+
+p_record_user_input_to_unlock_device:
+02f7 6fe0ca1a fetch 1 ,mem_device_key 
+02f8 c002033f beq 0x04 ,p_set_key_data_3_only 
+02f9 c0040341 beq 0x08 ,p_set_key_data_4_only 
+02fa c0080343 beq 0x10 ,p_set_key_data_5_only 
+
+p_record_user_input_to_unlock_device_next:
+02fb 67e08964 store 1 ,mem_temp 
+02fc 6fe0ca39 fetch 1 ,mem_record_user_input_ptr 
+02fd 1fe67c0b sub pdata ,11 ,null 
+02fe 2022830a branch p_reset_user_input_ptr_handler_unlock_device ,zero 
+02ff da204a42 arg mem_password_user_input_record ,rega 
+0300 9a208a00 iadd rega ,contw 
+0301 6fe08964 fetch 1 ,mem_temp 
+0302 e7e08005 istore 1 ,contw 
+0303 6fe0ca39 fetch 1 ,mem_record_user_input_ptr 
+0304 1fe0fe01 pincrease 1 
+0305 67e0ca39 store 1 ,mem_record_user_input_ptr 
+0306 6fe0ca36 fetch 1 ,mem_password_user_input_ptr 
+0307 1fe0fe01 pincrease 1 
+0308 67e0ca36 store 1 ,mem_password_user_input_ptr 
+0309 20600000 rtn 
+
+p_reset_user_input_ptr_handler_unlock_device:
+030a 6fe08964 fetch 1 ,mem_temp 
+030b 67e0ca4d store 1 ,mem_password_user_input_record + 11 
+030c 704a3900 jam 0 ,mem_record_user_input_ptr 
+030d d8c04a42 arg mem_password_user_input_record ,contr 
+030e d8a04a4e arg mem_password_temp ,contw 
+030f 204000fb call password_get 
+0310 da404a4e arg mem_password_temp ,regb 
+0311 204000ef call p_device_password_list_search 
+0312 2434031d nbranch p_reset_user_input_ptr_handler_unlock_device_next ,user 
+0313 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+0314 207a0000 rtn blank 
+0315 6fe0ca5e fetch 1 ,mem_device_rcvd_password_coordinate_x_temp 
+0316 204002dd call p_read_password_state 
+0317 6848ca5f fetcht 1 ,mem_device_rcvd_password_coordinate_y_temp 
+0318 98467c00 isub temp ,null 
+0319 2422831d nbranch p_reset_user_input_ptr_handler_unlock_device_next ,zero 
+031a 6fe14a5e fetch 2 ,mem_device_rcvd_password_coordinate_x_temp 
+031b 67e14a52 store 2 ,mem_device_rcvd_password_coordinate_x 
+031c 20400322 call p_user_input_handler_unlock_device_step2 
+
+p_reset_user_input_ptr_handler_unlock_device_next:
+031d 704a3800 jam 0 ,mem_record_user_input_flag 
+031e 704a3600 jam 0 ,mem_password_user_input_ptr 
+031f 704a7101 jam 1 ,mem_rtn_after_unlock 
+0320 245601b3 ncall p_device_led_power_password_error_blink ,user2 
+0321 20600000 rtn 
+
+p_user_input_handler_unlock_device_step2:
+0322 d8c04a48 arg mem_password_user_input_record + 6 ,contr 
+0323 d8a04a4e arg mem_password_temp ,contw 
+0324 204000fb call password_get 
+0325 da404a4e arg mem_password_temp ,regb 
+0326 204000ef call p_device_password_list_search 
+0327 24740000 nrtn user 
+0328 6fe14a5e fetch 2 ,mem_device_rcvd_password_coordinate_x_temp 
+0329 68494a52 fetcht 2 ,mem_device_rcvd_password_coordinate_x 
+032a 98467c00 isub temp ,null 
+032b 24628000 nrtn zero 
+032c 20400386 call p_device_lock_timer_end 
+032d 20207e58 branch enable_user2 
+
+p_reset_user_input_ptr_handler:
+032e 6fe0ca1a fetch 1 ,mem_device_key 
+032f 67e0ca49 store 1 ,mem_password_user_input_record + 7 
+0330 704a3900 jam 0 ,mem_record_user_input_ptr 
+0331 6fe44a3a fetch 8 ,mem_password_free_1_min_judge_base 
+0332 684c4a42 fetcht 8 ,mem_password_user_input_record 
+0333 98467c00 isub temp ,null 
+0334 2042825a call p_use_for_free_1_min ,zero 
+0335 704a3800 jam 0 ,mem_record_user_input_flag 
+0336 20600000 rtn 
+
+p_use_free_1_min_start:
+0337 704a5100 jam 0 ,mem_use_free_1_min_start 
+0338 20600000 rtn 
+
+p_set_key_data_3:
+0339 58000003 setarg 3 
+033a 202002b9 branch p_password_input_handler_next 
+
+p_set_key_data_4:
+033b 58000004 setarg 4 
+033c 202002b9 branch p_password_input_handler_next 
+
+p_set_key_data_5:
+033d 58000005 setarg 5 
+033e 202002b9 branch p_password_input_handler_next 
+
+p_set_key_data_3_only:
+033f 58000003 setarg 3 
+0340 202002fb branch p_record_user_input_to_unlock_device_next 
+
+p_set_key_data_4_only:
+0341 58000004 setarg 4 
+0342 202002fb branch p_record_user_input_to_unlock_device_next 
+
+p_set_key_data_5_only:
+0343 58000005 setarg 5 
+0344 202002fb branch p_record_user_input_to_unlock_device_next 
+
+p_device_check_store_info_timer:
+0345 6fe08cc1 fetch 1 ,mem_probation_cooling_period_store 
+0346 207a0000 rtn blank 
+0347 6fe0ca70 fetch 1 ,mem_charge_for_free_not_cooling 
+0348 207a0000 rtn blank 
+0349 da604a64 arg mem_device_store_info_timer ,regc 
+034a da40034c arg p_device_store_info_to_eeprom ,regb 
+034b 2020318a branch timer_single_step 
+
+p_device_store_info_to_eeprom:
+034c 704a6458 jam timer_1_min ,mem_device_store_info_timer 
+034d 20400200 call p_device_store_use_for_free_info 
+034e 20600000 rtn 
+
+p_device_check_red_led_on_timer:
+034f c6820000 rtnmark0 mark_red_led_power_need_on 
+0350 da604a63 arg mem_device_led_power_led_on_timer ,regc 
+0351 da400353 arg p_device_light_red ,regb 
+0352 2020318a branch timer_single_step 
+
+p_device_light_red:
+0353 793f8004 set0 mark_red_led_power_need_on ,mark 
+0354 20200186 branch p_device_led_power_on 
+
+p_device_led_power_blink_timer:
+0355 6fe0c98c fetch 1 ,mem_device_led_power_blink_enable 
+0356 207a0000 rtn blank 
+
+p_device_led_power_type_blink_timer:
+0357 da604993 arg mem_device_led_power_blink_timer ,regc 
+0358 da400190 arg p_device_led_power_type_blink ,regb 
+0359 2020318a branch timer_single_step 
+
+p_device_lock_timer:
+035a c6810000 rtnmark0 mark_input_password_error_to_much 
+035b da604a61 arg mem_device_lock_count ,regc 
+035c da400386 arg p_device_lock_timer_end ,regb 
+035d 20203191 branch timer_single_step_2b 
+
+p_device_charge_timer:
+035e 6fe0ca6e fetch 1 ,mem_in_charge_flag 
+035f 207a0000 rtn blank 
+0360 da604a68 arg mem_device_charge_control_count ,regc 
+0361 da400368 arg p_device_charge_end ,regb 
+0362 2020038b branch timer_single_step_3b 
+
+p_device_charge_free_cooling_timer:
+0363 6fe0ca70 fetch 1 ,mem_charge_for_free_not_cooling 
+0364 207a0000 rtn blank 
+0365 da604a6c arg mem_charge_for_free_cooling_count ,regc 
+0366 da400382 arg p_device_charge_free_cooling_end ,regb 
+0367 20203191 branch timer_single_step_2b 
+
+p_device_charge_end:
+0368 58000000 setarg 0 
+0369 67e0ca6e store 1 ,mem_in_charge_flag 
+036a 67e1ca68 store 3 ,mem_device_charge_control_count 
+036b 2040018e call p_device_led_action_off 
+036c 204001bb call p_device_charge_disable 
+036d 20400225 call p_device_store_charge_time_info 
+036e 6fe0ca6f fetch 1 ,mem_device_in_charge_probation 
+036f 245a0376 ncall p_reverse_probation_flag ,blank 
+0370 6fe0ca8f fetch 1 ,mem_charge_for_free 
+0371 207a0000 rtn blank 
+0372 704a7001 jam 1 ,mem_charge_for_free_not_cooling 
+0373 704a6458 jam timer_1_min ,mem_device_store_info_timer 
+0374 704a8f00 jam 0 ,mem_charge_for_free 
+0375 20600000 rtn 
+
+p_reverse_probation_flag:
+0376 704a6f00 jam 0 ,mem_device_in_charge_probation 
+0377 20600000 rtn 
+
+p_device_store_charge_time_timer:
+0378 6fe0ca6e fetch 1 ,mem_in_charge_flag 
+0379 207a0000 rtn blank 
+037a 6fe14a66 fetch 2 ,mem_device_store_charge_time_timer 
+037b 207a0000 rtn blank 
+037c da604a66 arg mem_device_store_charge_time_timer ,regc 
+037d da40037f arg p_device_store_charge_timer_end ,regb 
+037e 20203191 branch timer_single_step_2b 
+
+p_device_store_charge_timer_end:
+037f 58000258 setarg timer_1_min 
+0380 67e14a66 store 2 ,mem_device_store_charge_time_timer 
+0381 20200225 branch p_device_store_charge_time_info 
+
+p_device_charge_free_cooling_end:
+0382 704a7000 jam 0 ,mem_charge_for_free_not_cooling 
+0383 58000000 setarg 0 
+0384 67e14a6c store 2 ,mem_charge_for_free_cooling_count 
+0385 20200200 branch p_device_store_use_for_free_info 
+
+p_device_lock_timer_end:
+0386 793f8002 set0 mark_input_password_error_to_much ,mark 
+0387 58000000 setarg 0 
+0388 67e14a61 store 2 ,mem_device_lock_count 
+0389 67e0ca5b store 1 ,mem_input_error_num 
+038a 20600000 rtn 
+
+timer_single_step_3b:
+038b efe18013 ifetch 3 ,regc 
+038c 207a0000 rtn blank 
+038d 1fe0ffff pincrease -1 
+038e e7e18013 istore 3 ,regc 
+038f 247a0000 nrtn blank 
+0390 1a427e00 copy regb ,pdata 
+0391 20207e05 branch callback_func 
+
+p_check_is_data_burned:
+0392 6fe10a1d fetch 2 ,mem_password_1hour 
+0393 d840ffff arg 0xffff ,temp 
+0394 98467c00 isub temp ,null 
+0395 2022839c branch p_device_not_burn_data ,zero 
+0396 6fe08a1b fetch 1 ,mem_times_when_power_recover 
+0397 67e0ca6b store 1 ,mem_recover_times_from_power_off 
+0398 704a7201 jam 1 ,mem_data_burned 
+0399 20400186 call p_device_led_power_on 
+039a 204001bb call p_device_charge_disable 
+039b 2020018e branch p_device_led_action_off 
+
+p_device_not_burn_data:
+039c 20400186 call p_device_led_power_on 
+039d 204001b9 call p_device_charge_enable 
+039e 2020018b branch p_device_led_action_on 
+
+p_device_power_down_recover:
+039f 6fe0ca73 fetch 1 ,mem_device_power_recover_count_read_from_eeprom 
+03a0 68488a1b fetcht 1 ,mem_times_when_power_recover 
+03a1 98467c00 isub temp ,null 
+03a2 20610000 rtn positive 
+03a3 1fe0fe01 pincrease 1 
+03a4 67e0ca60 store 1 ,mem_device_power_recover_count 
+03a5 6fe1ca74 fetch 3 ,mem_device_charge_control_count_read_from_eeprom 
+03a6 20200246 branch p_turn_on_green_light_and_start_charge 
+
+p_set_recover_from_power_down_disable:
+03a7 79200003 set1 mark_recover_from_power_down_disable ,mark 
+03a8 20600000 rtn 
               org 0x800
 
 start:
Index: program/patch.prog
===================================================================
--- /YC1308AC/branch/Shared_charging_line/program/patch.prog	(revision 379)
+++ /YC1308AC/branch/Shared_charging_line/program/patch.prog	(working copy)
@@ -7,6 +7,7 @@
 
 pf_patch_ext:
 	beq patch36_1,p_le_receive_on_attempt
+	beq patch38_0,p_le_parse_read_request
 	branch loop
 
 /********************rx fail patch************************/
@@ -38,6 +39,53 @@
 	fetch 1,mem_system_clk
 	imul32 temp,stop_watch
 	branch le_receive_on_attempt+6
+/********************ble read response  patch************************/
+p_le_parse_read_request:
+	ifetch 2,contr
+	beq LE_L2CAP_CID_ATT,p_le_parse_att
+	beq LE_L2CAP_CID_SMP,le_parse_smp
+	beq LE_L2CAP_CID_SIGNAL,le_parse_signaling
+	rtn
+
+p_le_parse_att:
+	ifetch 3,contr
+	store 3,mem_le_att_opcode
+	beq ATTOP_READ_REQUEST,p_le_parse_att_read_request
+	branch le_parse_att+2
+
+	
+p_le_parse_att_read_request:
+	call le_check_encrypt_state
+	fetcht 2,mem_le_att_handle
+	fetch 1,mem_le_configuration
+	bbit1 BIT_BLE_READ_AUTH,le_send_att_read_response_check_auth
+//input:temp is handle
+p_le_send_att_read_response:
+	call le_att_get_handle_ptr2
+	nbranch le_send_att_error_response_notfound,zero
+	call le_send_att_read_response_check_handle,user
+	rtn user
+	call le_att_get_handle_ptr_found
+	increase -2,contr
+	call store_contr
+	ifetch 2,contr
+	arg UUID_CHRCTR_DEVICE_CHARGE,temp
+	isub temp,null
+	branch p_le_send_read_response,zero
+	call get_contr
+	branch le_send_att_read_response+6
+p_le_send_read_response:
+	call store_contr
+	setarg 6
+	add pdata,1,rega
+	call le_fifo_malloc_tx_l2cap_gatt
+	setarg ATTOP_READ_RESPONSE
+	istore 1,contw
+	arg 6,loopcnt
+	arg mem_device_rsp_header,contr
+	branch memcpy
+
+
 
 
 
@@ -61,11 +109,17 @@
 	call p_device_uarta_init
 	call p_device_charge_gpio_init
 	call p_device_power_on_eeprom_load_info
+	call p_check_is_data_burned
+	call p_device_load_use_for_free_info
+	call p_device_load_charge_package_status_info
+	call p_device_load_charge_time_info
 	call p_device_modified_name
 	branch p_device_ble_adv_start
 
 
 p_device_modified_name:
+	fetch 1,mem_data_burned
+	rtn blank
 	arg 2, loopcnt
 	arg mem_localname_length,regc
 	call string2dec
@@ -192,13 +246,27 @@
 	call p_device_password_verify
 	jam 0,mem_device_rsp_data1
 	jam 0,mem_device_rsp_data2
+	call p_device_charge_provisionally_judge_ischarging
+	call p_device_charge_free_cooling_end              //clear cooling time
 	arg mem_device_rsp_pkt,regc
 	branch p_device_prepare_data_and_send
+	
+p_device_charge_provisionally_judge_ischarging:
+	fetch 1,mem_in_charge_flag
+	nrtn blank 
+	jam 1,mem_device_in_charge_probation
+	fetcht 1, mem_le_rxbuf_data_payload+OFFSET_PACKET_USEDATA
+	setarg TIMER_1_MIN
+	imul32 temp,pdata
+	branch p_turn_on_green_light_and_start_charge
+
 
 p_device_power_off_forcibly:
 	call p_device_password_verify
 	jam 0,mem_device_rsp_data1
 	jam 0,mem_device_rsp_data2
+	jam 0,mem_device_charge_control_count
+	call p_device_charge_end
 	arg mem_device_rsp_pkt,regc
 	branch p_device_prepare_data_and_send
 
@@ -206,6 +274,9 @@
 	call p_device_password_verify
 	jam 0,mem_device_rsp_data1
 	jam 0,mem_device_rsp_data2
+	fetch 1, mem_le_rxbuf_data_payload+OFFSET_PACKET_USEDATA
+	store 1,mem_recover_times_from_power_off
+	call p_device_store_charge_time_info
 	arg mem_device_rsp_pkt,regc
 	branch p_device_prepare_data_and_send
 
@@ -225,9 +296,22 @@
 	call p_device_charge_regularly_rsp_result_coordinate
 	jam 1,mem_device_rsp_opcode
 	jam 0,mem_device_rsp_data2
+	set1 mark_red_led_power_need_on,mark
+	jam TIMER_1_S,mem_device_led_power_led_on_timer
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	sub pdata,0x0f,null
+	nbranch p_unfound_password,positive
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	ncall p_password_found,blank
+	arg mem_device_rsp_pkt,regc
+	branch p_device_prepare_data_and_send
+	
+p_unfound_password:
+	setarg 0
+	store 2,mem_device_rcvd_password_coordinate_x_temp
+	call p_device_led_power_password_error_blink
 	arg mem_device_rsp_pkt,regc
 	branch p_device_prepare_data_and_send
-
 
 p_device_charge_regularly_rsp_result_coordinate:
 	enable user
@@ -236,39 +320,47 @@
 	arg mem_le_rxbuf_data_payload+OFFSET_PACKET_PASSWORD,regb
 	call string_compare
 	ncall disable_user,zero	//password matched
+	arg mem_device_rcvd_password,contw
+	arg mem_le_rxbuf_data_payload+OFFSET_PACKET_DATA,contr
+	call password_get
+	arg mem_device_rcvd_password,regb
 	call p_device_password_list_search	//password exists or not
+//	fetch 2,mem_device_rcvd_password_coordinate_x_temp
+//	store 2,mem_device_rcvd_password_coordinate_x
 	setarg 0
 	nsetflag user,0,pdata
 	store 1,mem_device_rsp_result
 	jam 0,mem_device_rsp_data1
 	nrtn user
-	fetch 1,mem_device_rcvd_password_coordinate
+	fetch 1,mem_device_rcvd_password_coordinate_y_temp
 	store 1,mem_device_rsp_data1
 	rtn
 
 
-
+//regb:to query password
+//mem_device_rcvd_password_coordinate_x_temp: x
+//mem_device_rcvd_password_coordinate_y_temp:y
+//user: not found disable
 p_device_password_list_search:
-	call password_get
 	arg 225,loopcnt
 	arg mem_password_list,rega
-	arg mem_device_rcvd_password,regb
-	jam 0,mem_temp
-	jam 1,mem_device_rcvd_password_coordinate
+	jam 1,mem_device_rcvd_password_coordinate_y_temp
+	jam 1,mem_device_rcvd_password_coordinate_x_temp
 password_search:
-	call password_coordinate
 	ifetch 3,rega
 	ifetcht 3,regb
 	isub temp,null
-	rtn zero
+	rtn  zero
 	increase 3,rega
+	call password_coordinate
 	loop password_search
 	branch disable_user
 
+
+//contr is 6 bytes input
+//contw is 3 byte output        ----- 01 02 03 04 05 06---->12 34 56
 password_get:
 	arg 3,loopcnt
-	arg mem_device_rcvd_password,contw
-	arg mem_le_rxbuf_data_payload+OFFSET_PACKET_DATA,contr
 password_get_loop:	
 	ifetch 1,contr
 	lshift4 pdata,pdata
@@ -279,14 +371,14 @@
 	rtn
 
 password_coordinate:
-	fetch 1,mem_temp
+	fetch 1,mem_device_rcvd_password_coordinate_y_temp
 	increase 1,pdata
-	store 1,mem_temp
+	store 1,mem_device_rcvd_password_coordinate_y_temp
 	rtnne 0x10
-	jam 0,mem_temp
-	fetch 1,mem_device_rcvd_password_coordinate
+	jam 1,mem_device_rcvd_password_coordinate_y_temp
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
 	increase 1,pdata
-	store 1,mem_device_rcvd_password_coordinate
+	store 1,mem_device_rcvd_password_coordinate_x_temp
 	rtn
 
 
@@ -303,6 +395,12 @@
 
 p_device_bb_event_timer:
 	call p_device_led_power_blink_timer
+	call p_device_check_store_info_timer
+	call p_device_lock_timer
+	call p_device_charge_timer
+	call p_device_store_charge_time_timer
+	call p_device_charge_free_cooling_timer
+	call p_device_check_red_led_on_timer
 	branch p_device_app_updata_le_param_timer
 
 p_device_app_updata_le_param_timer:
@@ -310,6 +408,8 @@
 	arg le_l2cap_tx_update_req,regb
 	branch timer_single_step
 
+
+
 //////////////////////////////////////////// 100MS TIMER  END///////////////////////////////////
 
 
@@ -329,14 +429,14 @@
 p_device_keyscan_process:
 	call p_device_key
 	nrtn user
-	beq DEVICE_NUM1_KEY,p_device_led_power_keydown_blink
-	beq DEVICE_NUM2_KEY,p_device_led_power_keydown_blink
-	beq DEVICE_NUM3_KEY,p_device_led_power_keydown_blink
-	beq DEVICE_NUM4_KEY,p_device_led_power_keydown_blink
-	beq DEVICE_NUM5_KEY,p_device_led_power_keydown_blink
-	beq DEVICE_NUM6_KEY,p_device_led_power_keydown_blink
-	rtn
-	
+	set1 mark_red_led_power_need_on,mark
+	jam TIMER_1_1_S,mem_device_led_power_led_on_timer
+	bmark1 mark_input_password_error_to_much ,p_device_keysan_error_to_much_effect
+	call p_device_led_power_keydown_blink
+	branch p_password_input_handler
+p_device_keysan_error_to_much_effect:
+	call p_device_led_power_password_error_blink
+	branch p_password_input_handler
 
 p_device_key:
 	call disable_user
@@ -486,17 +586,12 @@
 	branch pwm_out_set
 
 p_device_led_action_off:
-	fetch 2,mem_led_action_pwm_conf
+	//fetch 2,mem_led_action_pwm_conf
+	setarg DEVICE_LED_ACTION_OFF_SEETING
 	branch pwm_disable
 	
 
-p_device_led_power_blink_timer:
-	fetch 1,mem_device_led_power_blink_enable
-	rtn blank
-p_device_led_power_type_blink_timer:
-	arg mem_device_led_power_blink_timer,regc
-	arg p_device_led_power_type_blink,regb
-	branch timer_single_step
+
 
 p_device_led_power_type_blink:
 	fetch 1,mem_device_led_power_blink_timer_init
@@ -635,7 +730,9 @@
 	arg mem_communication_data_start,contw
 	arg mem_pc_communication_data_start,contr
 	call memcpy_fast
-	branch p_device_uarta_transmit_succ
+	call  p_device_uarta_transmit_succ
+	call p_check_is_data_burned
+	branch p_device_modified_name
 	
 
 p_device_uarta_transmit_succ:
@@ -662,9 +759,8 @@
 	isub temp,temp
 	arg mem_communication_data_start,rega
 	arg DEVICE_INFO_EEPROM_OFFECT,regb
-	branch iicd_read_eep_data
-
-
+	branch  iicd_read_eep_data
+	
 p_device_pc_rcv_eeprom_store_info:
 	setarg mem_pc_communication_data_end
 	arg mem_pc_communication_data_start,temp
@@ -673,12 +769,631 @@
 	arg DEVICE_INFO_EEPROM_OFFECT,regb
 	branch iicd_write_protect_eep_data
 
+p_device_store_use_for_free_info:
+	fetch 1,mem_probation_cooling_period_store
+	rtn blank
+	arg 2,temp
+	arg mem_charge_for_free_cooling_count,rega
+	arg DEVICE_CHARGE_COOLING_INFO_OFFSET,regb
+	branch iicd_write_protect_eep_data
+
+p_device_load_use_for_free_info:
+	fetch 1,mem_probation_cooling_period_store
+	rtn blank
+	arg 2,temp
+	arg mem_charge_for_free_cooling_count,rega
+	arg DEVICE_CHARGE_COOLING_INFO_OFFSET,regb
+	call iicd_read_eep_data	
+	setarg TIMER_1_HOUR
+	fetcht 2,mem_charge_for_free_cooling_count
+	isub temp,null
+	nrtn positive
+	copy temp,pdata
+	rtn blank
+	jam 1,mem_charge_for_free_not_cooling
+	jam TIMER_1_MIN,mem_device_store_info_timer
+	rtn
+
+p_device_store_charge_package_status_info:
+	arg 15,temp
+	arg mem_password_now_state+1,rega
+	arg DEVICE_CHARGE_PACKAGE_STATUS_OFFSET,regb
+	branch iicd_write_protect_eep_data
+
+
+p_device_load_charge_package_status_info:
+	arg 15,temp
+	arg mem_password_now_state+1,rega
+	arg DEVICE_CHARGE_PACKAGE_STATUS_OFFSET,regb
+	call  iicd_read_eep_data
+	fetch 1,mem_password_now_state+1
+	arg 16,temp
+	isub temp,null
+	nrtn positive
+	fetch 8,mem_password_now_state_init
+	store 8,mem_password_now_state
+	store 8,mem_password_now_state+8
+	rtn
+
+p_device_store_charge_time_info:
+	arg 4,temp
+	arg mem_device_charge_control_count,rega
+	arg DEVICE_CHARGE_TIME_INFO_OFFSET,regb
+	branch iicd_write_protect_eep_data
+
+p_device_load_charge_time_info:
+	arg 4,temp
+	arg mem_device_charge_control_count,rega
+	arg DEVICE_CHARGE_TIME_INFO_OFFSET,regb
+	call  iicd_read_eep_data
+	setarg 0xffff
+	fetcht 2,mem_device_charge_control_count+2
+	isub temp,null
+	branch p_device_unsave_charge_time_handler,zero
+	fetch 3,mem_device_charge_control_count
+	sub pdata,0,pdata
+	rtn blank
+	fetch 1,mem_recover_times_from_power_off
+	rtn blank
+	pincrease -1
+	store 1,mem_recover_times_from_power_off
+	call p_device_set0_charge_time,blank
+	call p_device_store_charge_time_info
+	setarg TIMER_1_MIN
+	store 2,mem_device_store_charge_time_timer
+	branch p_turn_on_green_light_and_start_charge+1
+
+p_device_unsave_charge_time_handler:
+	setarg 0
+	store 3,mem_device_charge_control_count
+	fetch 1,mem_times_when_power_recover
+	store 1,mem_recover_times_from_power_off
+	rtn
+
+p_device_set0_charge_time:
+	setarg 0
+	store 3,mem_device_charge_control_count
+	store 1,mem_recover_times_from_power_off
+	rtn
+	
+
+//p_device_store_charge_info:
+//	arg 6,temp
+//	arg mem_device_charge_control_count,rega
+//	arg DEVICE_CHARGE_INFO_OFFSET,regb
+//	branch iicd_write_protect_eep_data
+
+//p_device_load_charge_info:
+//	arg 6,temp
+//	arg mem_device_charge_control_count,rega
+//	arg DEVICE_CHARGE_INFO_OFFSET,regb
+//	branch  iicd_read_eep_data
 	
 ////////////////////////////////////////////EEPROM   DATA  END ///////////////////////////////////
 
+////////////////////////////////////////////USER   INPUT  HANDLER ///////////////////////////////////
 
+//pdata:charge time
+p_turn_on_green_light_and_start_charge:
+	store 3,mem_device_charge_control_count
+	jam 1,mem_in_charge_flag
+	call p_device_led_action_on   
+	branch p_device_charge_enable   	
+	
+p_use_for_free_5_min:        //timer can be set
+	fetch 1,mem_in_charge_flag
+	nrtn blank
+	rtnmark1 mark_input_password_error_to_much
+	fetch 1,mem_charge_for_free_not_cooling       //is in cd
+	nbranch p_device_led_power_password_error_blink,blank
+
+	jam 1,mem_charge_for_free
+	jam 1,mem_device_in_charge_probation
+	fetcht 1,mem_probation_cooling_period
+	setarg TIMER_1_MIN
+	imul32 temp,pdata
+	store 2,mem_charge_for_free_cooling_count    //cd timer 
+	call p_device_store_use_for_free_info
+	
+	fetcht 1,mem_probation_period
+	setarg TIMER_1_MIN
+	imul32 temp,pdata
+	branch p_turn_on_green_light_and_start_charge
 
 
+	
+p_use_for_free_1_min:
+	fetch 1,mem_in_charge_flag
+	nrtn blank
+	rtnmark1 mark_input_password_error_to_much
+	fetch 1,mem_unlock_left_times
+	rtn blank
+	pincrease -1
+	store 1,mem_unlock_left_times
+//	rtn blank
+	jam 1,mem_use_free_1_min_start
+	jam 1,mem_device_in_charge_probation
+	setarg TIMER_1_MIN
+	branch p_turn_on_green_light_and_start_charge
+
+p_set_use_for_free_1_min_disable:
+	set1 mark_use_for_free_1_min_disable,mark
+	rtn
+
+p_set_input_password_error_to_much:
+	set1 mark_input_password_error_to_much,mark
+	setarg TIMER_15_MIN
+	store 2,mem_device_lock_count
+	rtn
+	
+p_input_password_discorrect:
+	call p_device_led_power_password_error_blink
+	fetch 1,mem_input_error_num
+	pincrease 1
+	store 1,mem_input_error_num
+	fetcht 1,mem_input_error_num_init
+	isub temp,null
+	branch p_set_input_password_error_to_much, positive	
+	rtn
+
+p_input_password_correct:
+	call p_update_password_state
+	call p_device_store_charge_package_status_info
+	setarg 0
+	store 2,mem_device_rcvd_password_coordinate
+	store 1,mem_input_error_num
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+p_input_password_correct_direct:	
+	beq PACKAGE_24_HOURS,p_package_24_hours
+	beq PACKAGE_30_MIN,p_package_30_min
+	beq PACKAGE_5_MIN,p_package_5_min
+	arg TIMER_1_HOUR,temp
+p_input_password_correct_next:	
+	imul32 temp,pdata
+	call p_turn_on_green_light_and_start_charge
+	call p_device_store_charge_time_info
+	setarg TIMER_1_MIN
+	store 2,mem_device_store_charge_time_timer
+	fetch 1,mem_recover_times_from_power_off
+	nrtn blank
+	store 2,mem_device_store_charge_time_timer
+	rtn
+
+	
+p_package_24_hours:
+	setarg 24
+	arg TIMER_1_HOUR,temp
+	branch p_input_password_correct_next
+
+p_package_30_min:
+	setarg TIMER_30_MIN
+	branch p_turn_on_green_light_and_start_charge
+	
+p_package_5_min:
+	setarg TIMER_5_MIN
+	branch p_turn_on_green_light_and_start_charge
+
+
+
+
+	
+//contw is the next to store	
+p_cal_offset:
+	fetch 1,mem_password_user_input_ptr
+	sub pdata,5,null
+	call p_reset_offset,zero
+p_cal_offset_next:	
+	arg mem_password_user_input,rega
+	iadd rega,contw
+	rtn
+p_offset_add1:
+	fetch 1,mem_password_user_input_ptr
+	pincrease 1
+	store 1,mem_password_user_input_ptr
+	rtn
+p_offset_dec1:
+	fetch 1,mem_password_user_input_ptr
+	pincrease -1
+	store 1,mem_password_user_input_ptr
+	rtn
+p_reset_offset:                    //loopback
+	jam 0,mem_password_user_input_ptr
+	jam 1,mem_password_input_full
+	rtn
+
+p_key_clear_input:
+	fetch 1,mem_password_user_input_ptr
+	ncall p_offset_dec1,blank
+	call p_cal_offset_next
+	call store_contw
+	call p_offset_dec1
+	call get_contw
+	setarg 0
+	branch p_password_input_handler_next
+
+p_rtn_after_unlock:
+	jam 0,mem_rtn_after_unlock
+	rtn
+
+
+p_password_input_handler:	
+	fetch 1,mem_device_key
+	rtn blank
+	fetch 1,mem_password_user_input_ptr
+	call p_record_user_input_start,blank
+	fetch 1,mem_record_user_input_flag
+	ncall p_record_user_input,blank
+	rtnmark1 mark_input_password_error_to_much
+	fetch 1,mem_rtn_after_unlock
+	nbranch p_rtn_after_unlock,blank
+	fetch 1,mem_device_key
+	sub pdata,0x20,pdata
+	branch p_key_clear_input,blank        //clear key
+	call p_cal_offset
+	fetch 1,mem_device_key
+	beq 0x04,p_set_key_data_3
+	beq 0x08,p_set_key_data_4
+	beq 0x10,p_set_key_data_5
+p_password_input_handler_next:	
+	istore 1,contw
+	fetch 1,mem_password_input_full
+	nbranch p_password_compare,blank
+	branch p_offset_add1
+
+	
+p_password_compare:
+	jam 0,mem_password_input_full
+	arg mem_password_user_input,contr
+	arg mem_device_rcvd_password_from_user,contw
+	call password_get                                                           //change recvd data to 3 bytes
+	fetcht 3,mem_device_rcvd_password_from_user
+	setarg USE_FOR_FREE_5_MIN
+	isub temp,null
+	branch p_use_for_free_5_min,zero      //11 11 11
+	arg mem_device_rcvd_password_from_user,regb
+	call p_device_password_list_search                //get the password in list x,y  or don't exist
+	branch p_password_found,user
+	fetch 1,mem_use_free_1_min_start
+	nbranch p_use_free_1_min_start,blank
+	branch p_input_password_discorrect
+
+
+p_password_found:
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	rtn blank
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	call p_read_password_state
+	fetcht 1,mem_device_rcvd_password_coordinate_y_temp
+	isub temp,null       //now state -- user input 
+	branch p_input_password_correct,zero
+	ncall p_update_password_state,positive
+	call p_device_store_charge_package_status_info
+	branch  p_device_led_power_password_error_blink
+
+
+p_update_password_state:
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	fetcht 1,mem_device_rcvd_password_coordinate_y_temp
+	sub temp,0x0f,null
+	call p_set_state_0,zero
+	add temp, 1,temp
+	branch p_write_password_state
+
+p_set_state_0:
+	arg 0,temp
+	rtn
+	
+//input:pdata is the group to find
+//output:pdata is state
+p_read_password_state:
+	arg mem_password_now_state,regb
+	iadd regb,regb
+	ifetch 1,regb
+	rtn
+	
+//input:pdata is the group to find
+//input:temp is the value
+//output:NULL
+p_write_password_state:
+	arg mem_password_now_state,regb
+	iadd regb,contw
+	copy temp,pdata
+	istore 1,contw
+	rtn
+
+p_record_user_input_start:
+	jam 1,mem_record_user_input_flag
+	jam 0,mem_record_user_input_ptr
+	disable user2
+	rtn
+p_record_user_input:
+	isolate1 mark_input_password_error_to_much,mark
+	branch p_record_user_input_to_unlock_device,true
+	fetch 1,mem_record_user_input_ptr
+	sub pdata,7,null	
+	branch p_reset_user_input_ptr_handler,zero
+	arg mem_password_user_input_record,rega
+	iadd rega,contw
+	fetch 1,mem_device_key
+	istore 1,contw
+	fetch 1,mem_record_user_input_ptr
+	pincrease 1
+	store 1,mem_record_user_input_ptr
+	rtn
+
+p_record_user_input_to_unlock_device:
+	fetch 1,mem_device_key
+	beq 0x04,p_set_key_data_3_only
+	beq 0x08,p_set_key_data_4_only
+	beq 0x10,p_set_key_data_5_only
+p_record_user_input_to_unlock_device_next:	
+	store 1,mem_temp
+	fetch 1,mem_record_user_input_ptr
+	sub pdata,11,null	
+	branch p_reset_user_input_ptr_handler_unlock_device,zero
+	arg mem_password_user_input_record,rega
+	iadd rega,contw
+	fetch 1,mem_temp
+	istore 1,contw
+	fetch 1,mem_record_user_input_ptr
+	pincrease 1
+	store 1,mem_record_user_input_ptr
+	fetch 1,mem_password_user_input_ptr
+	pincrease 1
+	store 1,mem_password_user_input_ptr
+	rtn
+
+p_reset_user_input_ptr_handler_unlock_device:
+	fetch 1,mem_temp
+	store 1,mem_password_user_input_record+11
+	jam 0,mem_record_user_input_ptr
+	arg mem_password_user_input_record,contr      
+	arg mem_password_temp,contw
+	call password_get
+	arg mem_password_temp,regb
+	call p_device_password_list_search     //FIND FIRST 6 BYTE IS IN LIST
+	nbranch p_reset_user_input_ptr_handler_unlock_device_next,user   //	FIND NONE ERROR
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	rtn blank
+	fetch 1,mem_device_rcvd_password_coordinate_x_temp
+	call p_read_password_state
+	fetcht 1,mem_device_rcvd_password_coordinate_y_temp
+	isub temp,null       //now state -- user input 
+	nbranch p_reset_user_input_ptr_handler_unlock_device_next,zero  //NOT THIS PASSWORD ERROR
+	fetch 2,mem_device_rcvd_password_coordinate_x_temp
+	store 2,mem_device_rcvd_password_coordinate_x
+	call p_user_input_handler_unlock_device_step2
+p_reset_user_input_ptr_handler_unlock_device_next:	
+	jam 0,mem_record_user_input_flag
+	jam 0,mem_password_user_input_ptr
+	jam 1,mem_rtn_after_unlock
+	ncall p_device_led_power_password_error_blink,user2
+	rtn
+
+	
+p_user_input_handler_unlock_device_step2:
+	arg mem_password_user_input_record+6,contr
+	arg mem_password_temp,contw
+	call password_get
+	arg mem_password_temp,regb
+	call p_device_password_list_search  
+	nrtn user
+	fetch 2,mem_device_rcvd_password_coordinate_x_temp
+	fetcht 2,mem_device_rcvd_password_coordinate_x
+	isub temp,null
+	nrtn zero
+	call p_device_lock_timer_end
+	branch enable_user2
+	
+
+	
+p_reset_user_input_ptr_handler:
+	fetch 1,mem_device_key
+	store 1,mem_password_user_input_record+7
+	jam 0,mem_record_user_input_ptr
+	fetch 8,mem_password_free_1_min_judge_base
+	fetcht 8,mem_password_user_input_record
+	isub temp,null
+	call p_use_for_free_1_min,zero
+	jam 0,mem_record_user_input_flag
+	//jam 1,mem_use_free_1_min_start
+	rtn
+	
+p_use_free_1_min_start:
+	jam 0,mem_use_free_1_min_start
+	rtn
+
+
+p_set_key_data_3:
+	setarg 3
+	branch p_password_input_handler_next
+
+p_set_key_data_4:
+	setarg 4
+	branch p_password_input_handler_next
+
+p_set_key_data_5:
+	setarg 5
+	branch p_password_input_handler_next
+
+p_set_key_data_3_only:
+	setarg 3
+	branch p_record_user_input_to_unlock_device_next
+p_set_key_data_4_only:
+	setarg 4
+	branch p_record_user_input_to_unlock_device_next
+
+p_set_key_data_5_only:
+	setarg 5
+	branch p_record_user_input_to_unlock_device_next
+
+
+
+
+
+
+
+
+////////////////////////////////////////////USER   INPUT  HANDLER END /////////////////////////
+
+
+///////////////////////////////////Timer Handler  /////////////////////////
+p_device_check_store_info_timer:
+	fetch 1,mem_probation_cooling_period_store
+	rtn blank
+	fetch 1,mem_charge_for_free_not_cooling
+	rtn blank
+	arg mem_device_store_info_timer,regc
+	arg p_device_store_info_to_eeprom,regb
+	branch timer_single_step
+
+p_device_store_info_to_eeprom:
+	jam TIMER_1_MIN,mem_device_store_info_timer
+	call p_device_store_use_for_free_info
+	rtn
+
+
+
+p_device_check_red_led_on_timer:
+	rtnmark0 mark_red_led_power_need_on
+	arg mem_device_led_power_led_on_timer,regc
+	arg p_device_light_red,regb
+	branch timer_single_step
+
+p_device_light_red:
+	set0 mark_red_led_power_need_on,mark
+	branch p_device_led_power_on
+
+//LED
+p_device_led_power_blink_timer:
+	fetch 1,mem_device_led_power_blink_enable
+	rtn blank
+p_device_led_power_type_blink_timer:
+	arg mem_device_led_power_blink_timer,regc
+	arg p_device_led_power_type_blink,regb
+	branch timer_single_step
+
+//DEVICE LOCK
+p_device_lock_timer:
+	rtnmark0 mark_input_password_error_to_much
+	arg mem_device_lock_count,regc
+	arg p_device_lock_timer_end,regb
+	branch timer_single_step_2B
+
+
+//CHARGE
+p_device_charge_timer:
+	fetch 1,mem_in_charge_flag
+	rtn blank
+	arg mem_device_charge_control_count,regc
+	arg p_device_charge_end,regb
+	branch timer_single_step_3B
+
+p_device_charge_free_cooling_timer:
+ 	fetch 1,mem_charge_for_free_not_cooling
+	rtn blank
+	arg mem_charge_for_free_cooling_count,regc
+	arg p_device_charge_free_cooling_end,regb
+	branch timer_single_step_2B
+
+p_device_charge_end:
+	setarg 0
+	store 1,mem_in_charge_flag
+	store 3,mem_device_charge_control_count
+	call p_device_led_action_off
+	call p_device_charge_disable
+	call p_device_store_charge_time_info
+	fetch 1,mem_device_in_charge_probation
+	ncall p_reverse_probation_flag,blank
+	fetch 1,mem_charge_for_free
+	rtn blank
+	jam 1,mem_charge_for_free_not_cooling
+	jam TIMER_1_MIN,mem_device_store_info_timer
+	jam 0,mem_charge_for_free
+	rtn
+
+p_reverse_probation_flag:
+	jam 0,mem_device_in_charge_probation
+	rtn
+
+
+//CHARGE TIME STORE TIMER
+p_device_store_charge_time_timer:
+	fetch 1,mem_in_charge_flag
+	rtn blank
+	fetch 2,mem_device_store_charge_time_timer
+	rtn blank
+	arg mem_device_store_charge_time_timer,regc
+	arg p_device_store_charge_timer_end,regb
+	branch timer_single_step_2B
+
+p_device_store_charge_timer_end:
+	setarg TIMER_1_MIN
+	store 2,mem_device_store_charge_time_timer
+	branch p_device_store_charge_time_info
+
+
+//CHAEGR FREE COOLING
+p_device_charge_free_cooling_end:
+	jam 0,mem_charge_for_free_not_cooling
+	setarg 0
+	store 2,mem_charge_for_free_cooling_count
+	branch p_device_store_use_for_free_info
+
+p_device_lock_timer_end:
+	set0 mark_input_password_error_to_much,mark
+	setarg 0
+	store 2,mem_device_lock_count
+	store 1,mem_input_error_num
+	rtn
+
+timer_single_step_3B:
+	ifetch 3,regc
+	rtn blank
+	pincrease -1
+	istore 3,regc
+	nrtn blank
+	copy regb,pdata
+	branch callback_func
+
+///////////////////////////////////Timer Handler END/////////////////////////	
+p_check_is_data_burned:
+//	fetch 1,mem_data_burned
+//	nrtn blank
+	fetch 2,mem_password_1hour
+	arg 0xffff,temp
+	isub temp,null
+	branch p_device_not_burn_data,zero
+	fetch 1,mem_times_when_power_recover
+	store 1,mem_recover_times_from_power_off
+	jam 1,mem_data_burned
+	call p_device_led_power_on
+	call p_device_charge_disable
+	branch p_device_led_action_off
+
+p_device_not_burn_data:
+	call p_device_led_power_on
+	call p_device_charge_enable
+	branch p_device_led_action_on
+
+p_device_power_down_recover:
+	fetch 1,mem_device_power_recover_count_read_from_eeprom                  
+	fetcht 1,mem_times_when_power_recover
+	isub temp,null
+	rtn  positive
+	pincrease 1
+	store 1,mem_device_power_recover_count
+	fetch 3,mem_device_charge_control_count_read_from_eeprom             //recover
+	branch p_turn_on_green_light_and_start_charge
+	
+
+p_set_recover_from_power_down_disable:
+	set1 mark_recover_from_power_down_disable,mark
+	rtn	
+
+
+
+	
 //////////////////////////////////////////// USER CODE  END///////////////////////////////////
 
 
Index: sched/user.dat
===================================================================
--- /YC1308AC/branch/Shared_charging_line/sched/user.dat	(revision 379)
+++ /YC1308AC/branch/Shared_charging_line/sched/user.dat	(working copy)
@@ -77,4 +77,13 @@
 #succ
 mem_device_uart_transmit_succ:73 75 63 63
 
+mem_password_free_1_min_judge_base:01 02 04 08 10 20 10 10
+
+mem_device_rcvd_password_coordinate_x:00
+mem_device_rcvd_password_coordinate_y:00
+
+mem_input_error_num_init:05
+mem_after_input_error_input_correct_num_init:02
+mem_password_now_state: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+mem_password_now_state_init:01 01 01 01 01 01 01 01
 
