diff --git a/checker_gen1.uvoptx b/checker_gen1.uvoptx index 999cd07..2c8e293 100644 --- a/checker_gen1.uvoptx +++ b/checker_gen1.uvoptx @@ -1149,8 +1149,8 @@ - rt_thread - 1 + rtt + 0 0 0 0 @@ -1161,598 +1161,14 @@ 0 0 0 - .\source\rt_thread\libcpu\arm\cortex-m4\cpuport.c - cpuport.c - 0 - 0 - - - 6 - 51 - 2 - 0 - 0 - 0 - .\source\rt_thread\libcpu\arm\cortex-m4\context_rvds.S - context_rvds.S - 0 - 0 - - - 6 - 52 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\clock.c - clock.c - 0 - 0 - - - 6 - 53 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\components.c - components.c - 0 - 0 - - - 6 - 54 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\cpu.c - cpu.c - 0 - 0 - - - 6 - 55 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\idle.c - idle.c - 0 - 0 - - - 6 - 56 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\ipc.c - ipc.c - 0 - 0 - - - 6 - 57 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\irq.c - irq.c - 0 - 0 - - - 6 - 58 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\kservice.c - kservice.c - 0 - 0 - - - 6 - 59 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\mem.c - mem.c - 0 - 0 - - - 6 - 60 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\memheap.c - memheap.c - 0 - 0 - - - 6 - 61 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\mempool.c - mempool.c - 0 - 0 - - - 6 - 62 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\object.c - object.c - 0 - 0 - - - 6 - 63 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\scheduler.c - scheduler.c - 0 - 0 - - - 6 - 64 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\slab.c - slab.c - 0 - 0 - - - 6 - 65 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\thread.c - thread.c - 0 - 0 - - - 6 - 66 - 1 - 0 - 0 - 0 - .\source\rt_thread\src\timer.c - timer.c - 0 - 0 - - - 6 - 67 - 1 - 0 - 0 - 0 - .\source\rt_thread\board.c - board.c - 0 - 0 - - - 6 - 68 - 1 - 0 - 0 - 0 - .\source\rt_thread\core_delay.c - core_delay.c - 0 - 0 - - - - - soft - 1 - 0 - 0 - 0 - - 7 - 69 - 1 - 0 - 0 - 0 - .\source\soft\buff.c - buff.c - 0 - 0 - - - 7 - 70 - 1 - 0 - 0 - 0 - .\source\soft\mystring.c - mystring.c - 0 - 0 - - - 7 - 71 - 1 - 0 - 0 - 0 - .\source\soft\mystdlib.c - mystdlib.c - 0 - 0 - - - 7 - 72 - 1 - 0 - 0 - 0 - .\source\soft\list.c - list.c - 0 - 0 - - - 7 - 73 - 1 - 0 - 0 - 0 - .\source\soft\signal.c - signal.c - 0 - 0 - - - 7 - 74 - 1 - 0 - 0 - 0 - .\source\soft\bytearray.c - bytearray.c - 0 - 0 - - - 7 - 75 - 1 - 0 - 0 - 0 - .\source\soft\sort.c - sort.c - 0 - 0 - - - 7 - 76 - 1 - 0 - 0 - 0 - .\source\soft\cJSON.c - cJSON.c - 0 - 0 - - - 7 - 77 - 1 - 0 - 0 - 0 - .\source\soft\debug.c - debug.c - 0 - 0 - - - 7 - 78 - 1 - 0 - 0 - 0 - .\source\soft\crc.c - crc.c - 0 - 0 - - - 7 - 79 - 1 - 0 - 0 - 0 - .\source\soft\mymisc.c - mymisc.c - 0 - 0 - - - - - task - 1 - 0 - 0 - 0 - - 8 - 80 - 1 - 0 - 0 - 0 - .\source\task\prot_mcu.c - prot_mcu.c - 0 - 0 - - - 8 - 81 - 1 - 0 - 0 - 0 - .\source\task\prot_uc.c - prot_uc.c - 0 - 0 - - - 8 - 82 - 1 - 0 - 0 - 0 - .\source\task\moter.c - moter.c - 0 - 0 - - - 8 - 83 - 1 - 0 - 0 - 0 - .\source\task\commend.c - commend.c - 0 - 0 - - - 8 - 84 - 1 - 0 - 0 - 0 - .\source\task\transmit.c - transmit.c - 0 - 0 - - - 8 - 85 - 1 - 0 - 0 - 0 - .\source\task\tran_for_checker.c - tran_for_checker.c - 0 - 0 - - - 8 - 86 - 1 - 0 - 0 - 0 - .\source\task\tran_for_coder.c - tran_for_coder.c - 0 - 0 - - - 8 - 87 - 1 - 0 - 0 - 0 - .\source\task\tran_for_coder2.c - tran_for_coder2.c - 0 - 0 - - - 8 - 88 - 1 - 0 - 0 - 0 - .\source\task\handle.c - handle.c - 0 - 0 - - - 8 - 89 - 1 - 0 - 0 - 0 - .\source\task\handle_for_checker.c - handle_for_checker.c - 0 - 0 - - - 8 - 90 - 1 - 0 - 0 - 0 - .\source\task\handle_for_coder.c - handle_for_coder.c - 0 - 0 - - - 8 - 91 - 1 - 0 - 0 - 0 - .\source\task\tcp.c - tcp.c - 0 - 0 - - - 8 - 92 - 1 - 0 - 0 - 0 - .\source\task\log.c - log.c - 0 - 0 - - - 8 - 93 - 1 - 0 - 0 - 0 - .\source\task\udp.c - udp.c - 0 - 0 - - - 8 - 94 - 1 - 0 - 0 - 0 - .\source\task\mod_signals.c - mod_signals.c - 0 - 0 - - - - - codec - 1 - 0 - 0 - 0 - - 9 - 95 - 1 - 0 - 0 - 0 - .\source\codec\codec.c - codec.c - 0 - 0 - - - - - rtt - 0 - 0 - 0 - 0 - - 10 - 96 - 1 - 0 - 0 - 0 .\source\RTT\SEGGER_RTT.c SEGGER_RTT.c 0 0 - 10 - 97 + 6 + 51 1 0 0 @@ -1764,6 +1180,242 @@ + + rt_thread + 0 + 0 + 0 + 0 + + 7 + 52 + 1 + 0 + 0 + 0 + .\source\rt_thread\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + 7 + 53 + 2 + 0 + 0 + 0 + .\source\rt_thread\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\clock.c + clock.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\components.c + components.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\cpu.c + cpu.c + 0 + 0 + + + 7 + 57 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\idle.c + idle.c + 0 + 0 + + + 7 + 58 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 59 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\irq.c + irq.c + 0 + 0 + + + 7 + 60 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 61 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\mem.c + mem.c + 0 + 0 + + + 7 + 62 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\memheap.c + memheap.c + 0 + 0 + + + 7 + 63 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 64 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\object.c + object.c + 0 + 0 + + + 7 + 65 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 66 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\slab.c + slab.c + 0 + 0 + + + 7 + 67 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\thread.c + thread.c + 0 + 0 + + + 7 + 68 + 1 + 0 + 0 + 0 + .\source\rt_thread\src\timer.c + timer.c + 0 + 0 + + + 7 + 69 + 1 + 0 + 0 + 0 + .\source\rt_thread\board.c + board.c + 0 + 0 + + + 7 + 70 + 1 + 0 + 0 + 0 + .\source\rt_thread\core_delay.c + core_delay.c + 0 + 0 + + + eth 0 @@ -1771,8 +1423,8 @@ 0 0 - 11 - 98 + 8 + 71 1 0 0 @@ -1783,8 +1435,8 @@ 0 - 11 - 99 + 8 + 72 1 0 0 @@ -1795,8 +1447,8 @@ 0 - 11 - 100 + 8 + 73 1 0 0 @@ -1807,8 +1459,8 @@ 0 - 11 - 101 + 8 + 74 1 0 0 @@ -1827,8 +1479,8 @@ 0 0 - 12 - 102 + 9 + 75 1 0 0 @@ -1839,8 +1491,8 @@ 0 - 12 - 103 + 9 + 76 1 0 0 @@ -1851,8 +1503,8 @@ 0 - 12 - 104 + 9 + 77 1 0 0 @@ -1863,8 +1515,8 @@ 0 - 12 - 105 + 9 + 78 1 0 0 @@ -1875,8 +1527,8 @@ 0 - 12 - 106 + 9 + 79 1 0 0 @@ -1887,8 +1539,8 @@ 0 - 12 - 107 + 9 + 80 1 0 0 @@ -1899,8 +1551,8 @@ 0 - 12 - 108 + 9 + 81 1 0 0 @@ -1911,8 +1563,8 @@ 0 - 12 - 109 + 9 + 82 1 0 0 @@ -1923,8 +1575,8 @@ 0 - 12 - 110 + 9 + 83 1 0 0 @@ -1935,8 +1587,8 @@ 0 - 12 - 111 + 9 + 84 1 0 0 @@ -1947,8 +1599,8 @@ 0 - 12 - 112 + 9 + 85 1 0 0 @@ -1959,8 +1611,8 @@ 0 - 12 - 113 + 9 + 86 1 0 0 @@ -1971,8 +1623,8 @@ 0 - 12 - 114 + 9 + 87 1 0 0 @@ -1983,8 +1635,8 @@ 0 - 12 - 115 + 9 + 88 1 0 0 @@ -1995,8 +1647,8 @@ 0 - 12 - 116 + 9 + 89 1 0 0 @@ -2007,8 +1659,8 @@ 0 - 12 - 117 + 9 + 90 1 0 0 @@ -2019,8 +1671,8 @@ 0 - 12 - 118 + 9 + 91 1 0 0 @@ -2031,8 +1683,8 @@ 0 - 12 - 119 + 9 + 92 1 0 0 @@ -2043,8 +1695,8 @@ 0 - 12 - 120 + 9 + 93 1 0 0 @@ -2055,8 +1707,8 @@ 0 - 12 - 121 + 9 + 94 1 0 0 @@ -2067,8 +1719,8 @@ 0 - 12 - 122 + 9 + 95 1 0 0 @@ -2079,8 +1731,8 @@ 0 - 12 - 123 + 9 + 96 1 0 0 @@ -2091,8 +1743,8 @@ 0 - 12 - 124 + 9 + 97 1 0 0 @@ -2103,8 +1755,8 @@ 0 - 12 - 125 + 9 + 98 1 0 0 @@ -2115,8 +1767,8 @@ 0 - 12 - 126 + 9 + 99 1 0 0 @@ -2127,8 +1779,8 @@ 0 - 12 - 127 + 9 + 100 1 0 0 @@ -2139,8 +1791,8 @@ 0 - 12 - 128 + 9 + 101 1 0 0 @@ -2151,8 +1803,8 @@ 0 - 12 - 129 + 9 + 102 1 0 0 @@ -2163,8 +1815,8 @@ 0 - 12 - 130 + 9 + 103 1 0 0 @@ -2175,8 +1827,8 @@ 0 - 12 - 131 + 9 + 104 1 0 0 @@ -2187,8 +1839,8 @@ 0 - 12 - 132 + 9 + 105 1 0 0 @@ -2199,8 +1851,8 @@ 0 - 12 - 133 + 9 + 106 1 0 0 @@ -2211,8 +1863,8 @@ 0 - 12 - 134 + 9 + 107 1 0 0 @@ -2223,8 +1875,8 @@ 0 - 12 - 135 + 9 + 108 1 0 0 @@ -2235,8 +1887,8 @@ 0 - 12 - 136 + 9 + 109 1 0 0 @@ -2249,7 +1901,355 @@ - readme + soft + 1 + 0 + 0 + 0 + + 10 + 110 + 1 + 0 + 0 + 0 + .\source\soft\buff.c + buff.c + 0 + 0 + + + 10 + 111 + 1 + 0 + 0 + 0 + .\source\soft\mystring.c + mystring.c + 0 + 0 + + + 10 + 112 + 1 + 0 + 0 + 0 + .\source\soft\mystdlib.c + mystdlib.c + 0 + 0 + + + 10 + 113 + 1 + 0 + 0 + 0 + .\source\soft\list.c + list.c + 0 + 0 + + + 10 + 114 + 1 + 0 + 0 + 0 + .\source\soft\signal.c + signal.c + 0 + 0 + + + 10 + 115 + 1 + 0 + 0 + 0 + .\source\soft\bytearray.c + bytearray.c + 0 + 0 + + + 10 + 116 + 1 + 0 + 0 + 0 + .\source\soft\sort.c + sort.c + 0 + 0 + + + 10 + 117 + 1 + 0 + 0 + 0 + .\source\soft\cJSON.c + cJSON.c + 0 + 0 + + + 10 + 118 + 1 + 0 + 0 + 0 + .\source\soft\debug.c + debug.c + 0 + 0 + + + 10 + 119 + 1 + 0 + 0 + 0 + .\source\soft\crc.c + crc.c + 0 + 0 + + + 10 + 120 + 1 + 0 + 0 + 0 + .\source\soft\mymisc.c + mymisc.c + 0 + 0 + + + + + task + 1 + 0 + 0 + 0 + + 11 + 121 + 1 + 0 + 0 + 0 + .\source\task\prot_mcu.c + prot_mcu.c + 0 + 0 + + + 11 + 122 + 1 + 0 + 0 + 0 + .\source\task\prot_uc.c + prot_uc.c + 0 + 0 + + + 11 + 123 + 1 + 0 + 0 + 0 + .\source\task\moter.c + moter.c + 0 + 0 + + + 11 + 124 + 1 + 0 + 0 + 0 + .\source\task\commend.c + commend.c + 0 + 0 + + + 11 + 125 + 1 + 0 + 0 + 0 + .\source\task\transmit.c + transmit.c + 0 + 0 + + + 11 + 126 + 1 + 0 + 0 + 0 + .\source\task\tran_for_checker.c + tran_for_checker.c + 0 + 0 + + + 11 + 127 + 1 + 0 + 0 + 0 + .\source\task\tran_for_coder.c + tran_for_coder.c + 0 + 0 + + + 11 + 128 + 1 + 0 + 0 + 0 + .\source\task\tran_for_coder2.c + tran_for_coder2.c + 0 + 0 + + + 11 + 129 + 1 + 0 + 0 + 0 + .\source\task\handle.c + handle.c + 0 + 0 + + + 11 + 130 + 1 + 0 + 0 + 0 + .\source\task\handle_for_checker.c + handle_for_checker.c + 0 + 0 + + + 11 + 131 + 1 + 0 + 0 + 0 + .\source\task\handle_for_coder.c + handle_for_coder.c + 0 + 0 + + + 11 + 132 + 1 + 0 + 0 + 0 + .\source\task\tcp.c + tcp.c + 0 + 0 + + + 11 + 133 + 1 + 0 + 0 + 0 + .\source\task\log.c + log.c + 0 + 0 + + + 11 + 134 + 1 + 0 + 0 + 0 + .\source\task\udp.c + udp.c + 0 + 0 + + + 11 + 135 + 1 + 0 + 0 + 0 + .\source\task\mod_signals.c + mod_signals.c + 0 + 0 + + + + + codec + 1 + 0 + 0 + 0 + + 12 + 136 + 1 + 0 + 0 + 0 + .\source\codec\codec.c + codec.c + 0 + 0 + + + + + coder 1 0 0 @@ -2257,6 +2257,50 @@ 13 137 + 1 + 0 + 0 + 0 + .\source\coder\PSDGenerate.c + PSDGenerate.c + 0 + 0 + + + 13 + 138 + 1 + 0 + 0 + 0 + .\source\coder\UIDGenerate.c + UIDGenerate.c + 0 + 0 + + + 13 + 139 + 1 + 0 + 0 + 0 + .\source\coder\coder_lib.c + coder_lib.c + 0 + 0 + + + + + readme + 1 + 0 + 0 + 0 + + 14 + 140 5 0 0 diff --git a/checker_gen1.uvprojx b/checker_gen1.uvprojx index 047a5b2..c0e465f 100644 --- a/checker_gen1.uvprojx +++ b/checker_gen1.uvprojx @@ -338,7 +338,7 @@ --diag_suppress=550,177 STM32F40_41xxx,USE_STDPERIPH_DRIVER,RT_THREAD - .\source\interface;.\source\core;.\source\stm32lib\inc;.\source\main;.\source\RTT;.\source\rt_thread\include;.\source\rt_thread;.\source\soft;.\source\task;.\source\dev;.\source\eth;.\source\lwip-1.4.1\src\include;.\source\lwip-1.4.1\port\STM32F4x7;.\source\lwip-1.4.1\src\include\ipv4;.\source\codec + .\source\interface;.\source\core;.\source\stm32lib\inc;.\source\main;.\source\RTT;.\source\rt_thread\include;.\source\rt_thread;.\source\soft;.\source\task;.\source\dev;.\source\eth;.\source\lwip-1.4.1\src\include;.\source\lwip-1.4.1\port\STM32F4x7;.\source\lwip-1.4.1\src\include\ipv4;.\source\codec;.\source\coder @@ -751,6 +751,21 @@ + + rtt + + + SEGGER_RTT.c + 1 + .\source\RTT\SEGGER_RTT.c + + + SEGGER_RTT_printf.c + 1 + .\source\RTT\SEGGER_RTT_printf.c + + + rt_thread @@ -851,222 +866,6 @@ - - soft - - - buff.c - 1 - .\source\soft\buff.c - - - mystring.c - 1 - .\source\soft\mystring.c - - - mystdlib.c - 1 - .\source\soft\mystdlib.c - - - list.c - 1 - .\source\soft\list.c - - - signal.c - 1 - .\source\soft\signal.c - - - bytearray.c - 1 - .\source\soft\bytearray.c - - - sort.c - 1 - .\source\soft\sort.c - - - cJSON.c - 1 - .\source\soft\cJSON.c - - - debug.c - 1 - .\source\soft\debug.c - - - crc.c - 1 - .\source\soft\crc.c - - - mymisc.c - 1 - .\source\soft\mymisc.c - - - - - task - - - prot_mcu.c - 1 - .\source\task\prot_mcu.c - - - prot_uc.c - 1 - .\source\task\prot_uc.c - - - moter.c - 1 - .\source\task\moter.c - - - commend.c - 1 - .\source\task\commend.c - - - transmit.c - 1 - .\source\task\transmit.c - - - tran_for_checker.c - 1 - .\source\task\tran_for_checker.c - - - tran_for_coder.c - 1 - .\source\task\tran_for_coder.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - tran_for_coder2.c - 1 - .\source\task\tran_for_coder2.c - - - handle.c - 1 - .\source\task\handle.c - - - handle_for_checker.c - 1 - .\source\task\handle_for_checker.c - - - handle_for_coder.c - 1 - .\source\task\handle_for_coder.c - - - tcp.c - 1 - .\source\task\tcp.c - - - log.c - 1 - .\source\task\log.c - - - udp.c - 1 - .\source\task\udp.c - - - mod_signals.c - 1 - .\source\task\mod_signals.c - - - - - codec - - - codec.c - 1 - .\source\codec\codec.c - - - - - rtt - - - SEGGER_RTT.c - 1 - .\source\RTT\SEGGER_RTT.c - - - SEGGER_RTT_printf.c - 1 - .\source\RTT\SEGGER_RTT_printf.c - - - eth @@ -1323,6 +1122,227 @@ + + soft + + + buff.c + 1 + .\source\soft\buff.c + + + mystring.c + 1 + .\source\soft\mystring.c + + + mystdlib.c + 1 + .\source\soft\mystdlib.c + + + list.c + 1 + .\source\soft\list.c + + + signal.c + 1 + .\source\soft\signal.c + + + bytearray.c + 1 + .\source\soft\bytearray.c + + + sort.c + 1 + .\source\soft\sort.c + + + cJSON.c + 1 + .\source\soft\cJSON.c + + + debug.c + 1 + .\source\soft\debug.c + + + crc.c + 1 + .\source\soft\crc.c + + + mymisc.c + 1 + .\source\soft\mymisc.c + + + + + task + + + prot_mcu.c + 1 + .\source\task\prot_mcu.c + + + prot_uc.c + 1 + .\source\task\prot_uc.c + + + moter.c + 1 + .\source\task\moter.c + + + commend.c + 1 + .\source\task\commend.c + + + transmit.c + 1 + .\source\task\transmit.c + + + tran_for_checker.c + 1 + .\source\task\tran_for_checker.c + + + tran_for_coder.c + 1 + .\source\task\tran_for_coder.c + + + 2 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + tran_for_coder2.c + 1 + .\source\task\tran_for_coder2.c + + + handle.c + 1 + .\source\task\handle.c + + + handle_for_checker.c + 1 + .\source\task\handle_for_checker.c + + + handle_for_coder.c + 1 + .\source\task\handle_for_coder.c + + + tcp.c + 1 + .\source\task\tcp.c + + + log.c + 1 + .\source\task\log.c + + + udp.c + 1 + .\source\task\udp.c + + + mod_signals.c + 1 + .\source\task\mod_signals.c + + + + + codec + + + codec.c + 1 + .\source\codec\codec.c + + + + + coder + + + PSDGenerate.c + 1 + .\source\coder\PSDGenerate.c + + + UIDGenerate.c + 1 + .\source\coder\UIDGenerate.c + + + coder_lib.c + 1 + .\source\coder\coder_lib.c + + + readme @@ -2131,6 +2151,21 @@ + + rtt + + + SEGGER_RTT.c + 1 + .\source\RTT\SEGGER_RTT.c + + + SEGGER_RTT_printf.c + 1 + .\source\RTT\SEGGER_RTT_printf.c + + + rt_thread @@ -3085,6 +3120,349 @@ + + eth + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + netconf.c + 1 + .\source\eth\netconf.c + + + stm32f4x7_eth.c + 1 + .\source\eth\stm32f4x7_eth.c + + + stm32f4x7_eth_bsp.c + 1 + .\source\eth\stm32f4x7_eth_bsp.c + + + ethernetif.c + 1 + .\source\eth\ethernetif.c + + + + + lwip + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + api_lib.c + 1 + .\source\lwip-1.4.1\src\api\api_lib.c + + + api_msg.c + 1 + .\source\lwip-1.4.1\src\api\api_msg.c + + + err.c + 1 + .\source\lwip-1.4.1\src\api\err.c + + + netbuf.c + 1 + .\source\lwip-1.4.1\src\api\netbuf.c + + + netdb.c + 1 + .\source\lwip-1.4.1\src\api\netdb.c + + + netifapi.c + 1 + .\source\lwip-1.4.1\src\api\netifapi.c + + + sockets.c + 1 + .\source\lwip-1.4.1\src\api\sockets.c + + + tcpip.c + 1 + .\source\lwip-1.4.1\src\api\tcpip.c + + + autoip.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\autoip.c + + + icmp.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\icmp.c + + + igmp.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\igmp.c + + + inet.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\inet.c + + + inet_chksum.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\inet_chksum.c + + + ip.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\ip.c + + + ip_addr.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\ip_addr.c + + + ip_frag.c + 1 + .\source\lwip-1.4.1\src\core\ipv4\ip_frag.c + + + def.c + 1 + .\source\lwip-1.4.1\src\core\def.c + + + dhcp.c + 1 + .\source\lwip-1.4.1\src\core\dhcp.c + + + dns.c + 1 + .\source\lwip-1.4.1\src\core\dns.c + + + init.c + 1 + .\source\lwip-1.4.1\src\core\init.c + + + mem.c + 1 + .\source\lwip-1.4.1\src\core\mem.c + + + memp.c + 1 + .\source\lwip-1.4.1\src\core\memp.c + + + netif.c + 1 + .\source\lwip-1.4.1\src\core\netif.c + + + pbuf.c + 1 + .\source\lwip-1.4.1\src\core\pbuf.c + + + raw.c + 1 + .\source\lwip-1.4.1\src\core\raw.c + + + stats.c + 1 + .\source\lwip-1.4.1\src\core\stats.c + + + tcp.c + 1 + .\source\lwip-1.4.1\src\core\tcp.c + + + tcp_in.c + 1 + .\source\lwip-1.4.1\src\core\tcp_in.c + + + tcp_out.c + 1 + .\source\lwip-1.4.1\src\core\tcp_out.c + + + timers.c + 1 + .\source\lwip-1.4.1\src\core\timers.c + + + udp.c + 1 + .\source\lwip-1.4.1\src\core\udp.c + + + etharp.c + 1 + .\source\lwip-1.4.1\src\netif\etharp.c + + + ethernetif.c + 1 + .\source\lwip-1.4.1\src\netif\ethernetif.c + + + sys.c + 1 + .\source\lwip-1.4.1\src\core\sys.c + + + sys_arch.c + 1 + .\source\lwip-1.4.1\port\STM32F4x7\arch\sys_arch.c + + + soft @@ -3782,360 +4160,22 @@ - rtt + coder - SEGGER_RTT.c + PSDGenerate.c 1 - .\source\RTT\SEGGER_RTT.c + .\source\coder\PSDGenerate.c - SEGGER_RTT_printf.c + UIDGenerate.c 1 - .\source\RTT\SEGGER_RTT_printf.c - - - - - eth - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - netconf.c - 1 - .\source\eth\netconf.c + .\source\coder\UIDGenerate.c - stm32f4x7_eth.c + coder_lib.c 1 - .\source\eth\stm32f4x7_eth.c - - - stm32f4x7_eth_bsp.c - 1 - .\source\eth\stm32f4x7_eth_bsp.c - - - ethernetif.c - 1 - .\source\eth\ethernetif.c - - - - - lwip - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - api_lib.c - 1 - .\source\lwip-1.4.1\src\api\api_lib.c - - - api_msg.c - 1 - .\source\lwip-1.4.1\src\api\api_msg.c - - - err.c - 1 - .\source\lwip-1.4.1\src\api\err.c - - - netbuf.c - 1 - .\source\lwip-1.4.1\src\api\netbuf.c - - - netdb.c - 1 - .\source\lwip-1.4.1\src\api\netdb.c - - - netifapi.c - 1 - .\source\lwip-1.4.1\src\api\netifapi.c - - - sockets.c - 1 - .\source\lwip-1.4.1\src\api\sockets.c - - - tcpip.c - 1 - .\source\lwip-1.4.1\src\api\tcpip.c - - - autoip.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\autoip.c - - - icmp.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\icmp.c - - - igmp.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\igmp.c - - - inet.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\inet.c - - - inet_chksum.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\inet_chksum.c - - - ip.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\ip.c - - - ip_addr.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\ip_addr.c - - - ip_frag.c - 1 - .\source\lwip-1.4.1\src\core\ipv4\ip_frag.c - - - def.c - 1 - .\source\lwip-1.4.1\src\core\def.c - - - dhcp.c - 1 - .\source\lwip-1.4.1\src\core\dhcp.c - - - dns.c - 1 - .\source\lwip-1.4.1\src\core\dns.c - - - init.c - 1 - .\source\lwip-1.4.1\src\core\init.c - - - mem.c - 1 - .\source\lwip-1.4.1\src\core\mem.c - - - memp.c - 1 - .\source\lwip-1.4.1\src\core\memp.c - - - netif.c - 1 - .\source\lwip-1.4.1\src\core\netif.c - - - pbuf.c - 1 - .\source\lwip-1.4.1\src\core\pbuf.c - - - raw.c - 1 - .\source\lwip-1.4.1\src\core\raw.c - - - stats.c - 1 - .\source\lwip-1.4.1\src\core\stats.c - - - tcp.c - 1 - .\source\lwip-1.4.1\src\core\tcp.c - - - tcp_in.c - 1 - .\source\lwip-1.4.1\src\core\tcp_in.c - - - tcp_out.c - 1 - .\source\lwip-1.4.1\src\core\tcp_out.c - - - timers.c - 1 - .\source\lwip-1.4.1\src\core\timers.c - - - udp.c - 1 - .\source\lwip-1.4.1\src\core\udp.c - - - etharp.c - 1 - .\source\lwip-1.4.1\src\netif\etharp.c - - - ethernetif.c - 1 - .\source\lwip-1.4.1\src\netif\ethernetif.c - - - sys.c - 1 - .\source\lwip-1.4.1\src\core\sys.c - - - sys_arch.c - 1 - .\source\lwip-1.4.1\port\STM32F4x7\arch\sys_arch.c + .\source\coder\coder_lib.c diff --git a/source/ReadMe.txt b/source/ReadMe.txt index c438aef..5894cec 100644 --- a/source/ReadMe.txt +++ b/source/ReadMe.txt @@ -88,4 +88,6 @@ bootloader在启动app之前会初始化系统参数 tran使用回调的方式接收handle的返回 注码指令自动回读结果 +2023.6.13 + 适配3码互转算法 \ No newline at end of file diff --git a/source/coder/PSDGenerate.c b/source/coder/PSDGenerate.c new file mode 100644 index 0000000..8a9eea6 --- /dev/null +++ b/source/coder/PSDGenerate.c @@ -0,0 +1,60 @@ +#include "PSDGenerate.h" + +/******************************************************************************************************************** + * 新版密码支持BCD码 * +********************************************************************************************************************/ + +uint64_t Scramble(uint64_t number, uint64_t max) +{ + int i = 0; + // some random values + uint64_t scramblers[] = { 3, 5, 7, 31, 343, 2348, 89897 }; + number += (max / 7) + 6; + number %= max; + // shuffle according to divisibility + for (i = 0; i < 7; i++) + { + if (scramblers[i] >= max / 3) break; + number = ((number * scramblers[i]) % max) + + ((number * scramblers[i]) / max); + } + + + return number % max; +} + +int GetPasswordByUidCode(const uint8_t *uidcode,uint8_t* psd) +{ + uint64_t val = 0,val1 = 0; + int i= 0; + uint64_t ulBCDPsd = 0; + + for(i=2;i<10;i++) + { + val *=10; + val += uidcode[i]-0x30; + } + val += uidcode[10]; + + for(i=11;i<16;i++) + { + val1 *=10; + val1 += uidcode[i]-0x30; + } + val = val + val1; + ulBCDPsd = Scramble(val, 0xFFFFFFFF); + + + psd[0] = (ulBCDPsd&0xFF000000)>>24; + psd[1] = (ulBCDPsd&0x00FF0000)>>16; + psd[2] = (ulBCDPsd&0x0000FF00)>>8; + psd[3] = ulBCDPsd&0x000000FF; + + return 0; +} + + + + + + diff --git a/source/coder/PSDGenerate.h b/source/coder/PSDGenerate.h new file mode 100644 index 0000000..969b613 --- /dev/null +++ b/source/coder/PSDGenerate.h @@ -0,0 +1,13 @@ +#ifndef __PSDGENERATE_H__ +#define __PSDGENERATE_H__ +#include +#include +#include "stdint.h" + + + +int GetPasswordByUidCode(const uint8_t *uidcode,uint8_t* psd); + + + +#endif diff --git a/source/coder/UIDGenerate.c b/source/coder/UIDGenerate.c new file mode 100644 index 0000000..4c4aa85 --- /dev/null +++ b/source/coder/UIDGenerate.c @@ -0,0 +1,303 @@ +#include "UIDGenerate.h" +#include "string.h" + + +//static u8 _CalcCrc8(u8 *Ptr,u8 num); + +static uint32_t UINT32_ENDIAN_CHANGE(uint32_t val); + +static bool YMUid_Valid_check(uint8_t *u8ArrayYMUid); + +static uint8_t CalcCrc8(uint8_t *Ptr,uint8_t num); + +static void string2hex(char* src,size_t srclen,char* dst,size_t *dstlen); +static bool byte2String(uint8_t *src, size_t srcoffset, size_t srclen, char* dst, size_t dstoffset, size_t *dstlen); + + + +bool UidCode_JQ2YM(const PST_JQUID_TYPEDEF pstJQUID,PST_YMUID_TYPEDEF pstYMUID) +{ + UNION_VALUE_CHANGE_TYPEDEF stDate; + UNION_VALUE_CHANGE_TYPEDEF stSerialCode ; + uint8_t i=0; + uint16_t u16Year = 0; + uint16_t u16Month = 0; + uint8_t u8Day = 0; + uint16_t u16Date =0; + ST_JQUID_TYPEDEF _stJQUID; + + uint16_t sum=0; + + for(i=0;i<8;i++) + { + sum=sum+pstJQUID->u8ArrayJQUidCode[i]; + _stJQUID.u8ArrayJQUidCode[7-i]=pstJQUID->u8ArrayJQUidCode[i]; //逆序detid + } + memcpy(pstJQUID->u8ArrayJQUidCode,_stJQUID.u8ArrayJQUidCode,8); + + if(sum == 0) //全0时,CRC码也为0,所以需要避免这种情况 + return 0; + + + if(pstJQUID->u8ArrayJQUidCode[7] != CalcCrc8(pstJQUID->u8ArrayJQUidCode,7)) + return false; + + pstYMUID->ucArrayYMUidCode[0] = pstJQUID->u8ArrayJQUidCode[0]/10+0x30; + pstYMUID->ucArrayYMUidCode[1] = pstJQUID->u8ArrayJQUidCode[0]%10+0x30; + + + + pstYMUID->ucArrayYMUidCode[4] = pstJQUID->u8ArrayJQUidCode[1];//特征码 + + u16Date = pstJQUID->u8ArrayJQUidCode[2]; + u16Date = u16Date<<8 | pstJQUID->u8ArrayJQUidCode[3]; + + u16Year = (u16Date>>9)&0x7F; + u16Month = (u16Date>>5)&0x0F; + u8Day = u16Date&0x1F; + + pstYMUID->ucArrayYMUidCode[2] = u16Year/10+0x30; + pstYMUID->ucArrayYMUidCode[3] = u16Year%10+0x30; + + pstYMUID->ucArrayYMUidCode[5] = u16Month/10+0x30; + pstYMUID->ucArrayYMUidCode[6] = u16Month%10+0x30; + + pstYMUID->ucArrayYMUidCode[7] = u8Day/10+0x30; + pstYMUID->ucArrayYMUidCode[8] = u8Day%10+0x30; + + + memcpy(stSerialCode.u8Val+1,pstJQUID->u8ArrayJQUidCode+4,3); + stSerialCode.u32Value = UINT32_ENDIAN_CHANGE( stSerialCode.u32Value); + + pstYMUID->ucArrayYMUidCode[DEF_YM_SPECIALCODE_INDEX] = (stSerialCode.u32Value>>17) & 0x7F; + stSerialCode.u32Value = stSerialCode.u32Value&0x1FFFF; + + for(i=14;i>=10;i--) + { + pstYMUID->ucArrayYMUidCode[i] = (stSerialCode.u32Value%10+0x30); + stSerialCode.u32Value = stSerialCode.u32Value/10; + + } + + + if(!YMUid_Valid_check(pstYMUID->ucArrayYMUidCode)) + return false; + + return true; +} + +bool UidCode_JQ2YM_NoBackwardSequence(const PST_JQUID_TYPEDEF pstJQUID,PST_YMUID_TYPEDEF pstYMUID) +{ + uint8_t i=0; + uint8_t ucYear = 0; + uint8_t ucMonth = 0; + uint8_t ucDay = 0; + uint32_t ulNumber =0; + uint8_t ucTeZhengMa = 0; + uint16_t usBoxCode = 0; + uint8_t ucIndexCode = 0; + size_t len = 16; + + if(pstJQUID->u8ArrayJQUidCode[7] != CalcCrc8(pstJQUID->u8ArrayJQUidCode,7)) + return false; + + byte2String(pstJQUID->u8ArrayJQUidCode,0,2,(char *)pstYMUID->ucArrayYMUidCode,0,&len);//AD58 + pstYMUID->ucArrayYMUidCode[4] = pstYMUID->ucArrayYMUidCode[2]; + pstYMUID->ucArrayYMUidCode[5] = pstYMUID->ucArrayYMUidCode[3]; + + + ucYear = pstJQUID->u8ArrayJQUidCode[2]>>1; + pstYMUID->ucArrayYMUidCode[2] = ucYear/10+0x30; + pstYMUID->ucArrayYMUidCode[3] = ucYear%10+0x30; + + ucMonth = ((pstJQUID->u8ArrayJQUidCode[2]&0x01)<<3)|((pstJQUID->u8ArrayJQUidCode[3]>>5)); + pstYMUID->ucArrayYMUidCode[6] = ucMonth/10+0x30; + pstYMUID->ucArrayYMUidCode[7] = ucMonth%10+0x30; + + ucDay = (pstJQUID->u8ArrayJQUidCode[3]&0x1F); + pstYMUID->ucArrayYMUidCode[8] = ucDay/10+0x30; + pstYMUID->ucArrayYMUidCode[9] = ucDay%10+0x30; + + ulNumber = pstJQUID->u8ArrayJQUidCode[4]; + ulNumber <<= 8; + ulNumber |= pstJQUID->u8ArrayJQUidCode[5]; + ulNumber <<= 8; + ulNumber |= pstJQUID->u8ArrayJQUidCode[6]; + + ucTeZhengMa = ulNumber/100000; + pstYMUID->ucArrayYMUidCode[10] = ucTeZhengMa; + + ulNumber = ulNumber%100000; + usBoxCode = ulNumber/100; + pstYMUID->ucArrayYMUidCode[11] = usBoxCode/100 + 0x30; + usBoxCode%=100; + pstYMUID->ucArrayYMUidCode[12] = usBoxCode/10+0x30; + pstYMUID->ucArrayYMUidCode[13] = usBoxCode%10 + 0x30; + + ucIndexCode = ulNumber%100; + pstYMUID->ucArrayYMUidCode[14] = ucIndexCode/10+0x30; + pstYMUID->ucArrayYMUidCode[15] = ucIndexCode%10 + 0x30; + + if(!YMUid_Valid_check(pstYMUID->ucArrayYMUidCode)) + return false; + + return true; +} + + + +bool UidCode_YM2JQ(PST_JQUID_TYPEDEF pstJQUID,const PST_YMUID_TYPEDEF pstYMUID) +{ + + uint8_t i=0; + uint16_t usYear = 0; + uint16_t usMonth = 0; + uint16_t usDay = 0; + uint32_t ulNumber =0; + uint16_t usBoxCode = 0; + uint8_t ucIndexCode = 0; + size_t dataLen = 0; + + if(!YMUid_Valid_check(pstYMUID->ucArrayYMUidCode)) + return false; + + string2hex((char *)pstYMUID->ucArrayYMUidCode,6,(char *)pstJQUID->u8ArrayJQUidCode,&dataLen); //0xAD 0x23 0x58 + + pstJQUID->u8ArrayJQUidCode[1] = pstJQUID->u8ArrayJQUidCode[2];//0xAD 0x58 + + //转换 年 月 日 + usYear = (pstYMUID->ucArrayYMUidCode[2]-0x30)*10 + (pstYMUID->ucArrayYMUidCode[3]-0x30); + usMonth = (pstYMUID->ucArrayYMUidCode[6]-0x30)*10 + (pstYMUID->ucArrayYMUidCode[7]-0x30); + usDay = (pstYMUID->ucArrayYMUidCode[8]-0x30)*10 + (pstYMUID->ucArrayYMUidCode[9]-0x30); + + usYear = usYear<<9|usMonth<<5|usDay; + + pstJQUID->u8ArrayJQUidCode[2] = (usYear&0xFF00)>>8; + pstJQUID->u8ArrayJQUidCode[3] = (usYear&0xFF); + + + + ulNumber = pstYMUID->ucArrayYMUidCode[10]*100000; + usBoxCode = (pstYMUID->ucArrayYMUidCode[11]-0x30)*100+ (pstYMUID->ucArrayYMUidCode[12]-0x30)*10+(pstYMUID->ucArrayYMUidCode[13]-0x30); + ucIndexCode = (pstYMUID->ucArrayYMUidCode[14]-0x30)*10+(pstYMUID->ucArrayYMUidCode[15]-0x30); + + ulNumber += usBoxCode*100+ucIndexCode; + + pstJQUID->u8ArrayJQUidCode[4] = (ulNumber&0xFF0000)>>16; + pstJQUID->u8ArrayJQUidCode[5] = (ulNumber&0xFF00)>>8; + pstJQUID->u8ArrayJQUidCode[6] = (ulNumber&0xFF); + + + pstJQUID->u8ArrayJQUidCode[7] = CalcCrc8(pstJQUID->u8ArrayJQUidCode,7); + + return true; +} + + +static bool YMUid_Valid_check(uint8_t *u8ArrayYMUid) +{ + uint8_t i=0; + uint8_t u8ValidDataCounter = 0; + + for(i=0;i<16;i++) + { + if(u8ArrayYMUid[i] >= '0' && u8ArrayYMUid[i] <= '9') + { + u8ValidDataCounter++; + continue; + } + if(u8ArrayYMUid[i] >= 'A' && u8ArrayYMUid[i] <= 'Z') + { + u8ValidDataCounter++; + continue; + } + if(u8ArrayYMUid[i] >= 'a' && u8ArrayYMUid[i] <= 'z') + { + u8ValidDataCounter++; + continue; + } + } + + if(u8ValidDataCounter < 7) + return false; + return true; +} + +static uint32_t UINT32_ENDIAN_CHANGE(uint32_t val) +{ + + return ((( val & 0x000000ff)<< 24 ) | ( ( val & 0x0000ff00 ) << 8 ) | ( ( val & 0x00ff0000 ) >> 8 ) | ( ( val & 0xff000000 ) >> 24 )); +} + +static void string2hex(char* src,size_t srclen,char* dst,size_t *dstlen) +{ + size_t i=0; + uint8_t tmp1=0,tmp2=0; + for(;i *dstlen-dstoffset) + return false; + + dst += dstoffset; + + for(i=srcoffset;i>4]; + *dst++ = MatirxHex[src[i]&0x0F]; + } + + *dstlen = (i-1)*2; + + return true; +} + +//============================================================================// +//8位CRC效验计算,只计算缓存区前6个字节 +//输入参数:需要计算数据缓存区头指针 +//返 回 值:效验值 +//============================================================================// +static uint8_t CalcCrc8(uint8_t *Ptr,uint8_t num) +{ + uint8_t i,j,crc = 0; + + for (j = 0; j < num; j++) + { + crc ^= *(Ptr+j); + for ( i = 0; i < 8; i++) + { + if ((crc & 0x01) != 0) + { + crc >>= 1; + crc ^= 0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; +} + + + + diff --git a/source/coder/UIDGenerate.h b/source/coder/UIDGenerate.h new file mode 100644 index 0000000..bb9c92b --- /dev/null +++ b/source/coder/UIDGenerate.h @@ -0,0 +1,37 @@ +#ifndef __UIDGENERATE_H__ +#define __UIDGENERATE_H__ +#include +#include +#include "stdint.h" + + + +#define DEF_YM_SPECIALCODE_INDEX 9 + +#pragma pack(1) +typedef struct +{ + unsigned char ucArrayYMUidCode[16]; +}ST_YMUID_TYPEDEF,*PST_YMUID_TYPEDEF; + +typedef struct +{ + uint8_t u8ArrayJQUidCode[8]; +}ST_JQUID_TYPEDEF,*PST_JQUID_TYPEDEF; + +typedef union +{ + uint32_t u32Value; + uint8_t u8Val[4]; +}UNION_VALUE_CHANGE_TYPEDEF,*PST_VALUE_CHANGE_TYPEDEF; + +#pragma pack() + +bool UidCode_YM2JQ(PST_JQUID_TYPEDEF pstJQUID,const PST_YMUID_TYPEDEF pstYMUID); + +bool UidCode_JQ2YM(const PST_JQUID_TYPEDEF pstJQUID,PST_YMUID_TYPEDEF pstYMUID); + +bool UidCode_JQ2YM_NoBackwardSequence(const PST_JQUID_TYPEDEF pstJQUID,PST_YMUID_TYPEDEF pstYMUID); + +#endif + diff --git a/source/coder/coder_lib.c b/source/coder/coder_lib.c new file mode 100644 index 0000000..c04cb58 --- /dev/null +++ b/source/coder/coder_lib.c @@ -0,0 +1,202 @@ +#include "coder_lib.h" +#include "string.h" +#include "mystring.h" +#include "crc.h" +#include "stdio.h" + +/* ++-----------------------------------------------------------------------+ +| 管壳码格式(ascii) | ++-----------------------------------------------------------------------+ +| 13byte | ++-----------------------------------------------------------------------+ +| 雷管厂代号 | 生产年份 | 生产月份 | 生产日 | 特征号 | 流水号 | ++------------+------------+------------+----------+----------+----------+ +| 2byte | 1byte | 2byte | 2byte | 1byte | 5byte | ++-----------------------------------------------------------------------+ + + + ++-----------------------------------------------------------------------+ +| UID码格式(ascii) | ++-----------------------------------------------------------------------+ +| 16byte | ++-----------------------------------------------------------------------+ +| 芯片厂代号 | 生产年份 | 雷管厂代号 | 月 | 日 | 特征码 | 盒号 | 序号 | ++------------+----------+------------+-----+-----+--------+------+------+ +| 2byte | 2byte | 2byte |2byte|2byte| 1byte | 3byte| 2byte| ++-----------------------------------------------------------------------+ + + + ++-----------------------------------------------------------------------+ +| UID码存储格式(hex) | ++-----------------------------------------------------------------------+ +| 8byte | ++-----------------------------------------------------------------------+ +| 芯片厂代号 | 雷管厂代号 | 年月日 | 特征码盒号序号 | crc8 | ++------------+------------+------------------+-------------------+------+ +| 1byte | 1byte | 2byte(大端) | 3byte(大端) | 1byte| ++-----------------------------------------------------------------------+ + + + +年月日(ascii)->年月日(hex) +年(y),月(m),日(d) +time=((((y[0]-'0')*10)+(y[1]-'0'))<<9)|\ + ((((m[0]-'0')*10)+(m[1]-'0'))<<5)|\ + (((d[0]-'0')*10)+(d[1]-'0')) + +特征码盒号序号(ascii)->特征码盒号序号(hex) +特征码(c),盒号(b),序号(i) +code=c*10000+((b[0]-'0')*100+(b[1]-'0')*10+(b[2]-'0'))*100+\ + ((i[1]-'0')*10+(i[2]-'0')) + + +*/ + + + + + +// 根据管壳码和年份信息生成uid的年份信息 +static int coder_calc_year(const char *year,const char shell_year,char *uid_year) +{ + int y=0; + for(int i=0;i<4;i++) + { + y*=10;y+=year[i]-'0'; + } + // year是实时数据,鉴于12月31生产的雷管,year可能不同 + // 此时year-1来保证与uid码上的相同 + if(year[3]!=shell_year) + y--; + uid_year[1]=y%100/10+'0'; + uid_year[0]=y%10+'0'; + if(uid_year[0]==shell_year) + return 0; + else + return -1; +} + + + +// 管壳码转uid码 +int coder_shell_to_uid(const char *year,const char *shell_code,char *uid_code) +{ + int ret=0; + memset(uid_code,0,16); + // 添加芯片企业代号(2byte) + memcpy(&uid_code[0],"AD",2); + // 添加年份(2y=byte) + ret=coder_calc_year(year,shell_code[2],&uid_code[2]); + // 添加雷管厂代号(2byte) + memcpy(&uid_code[4],&shell_code[0],2); + // 添加月日特征码流水号 + memcpy(&uid_code[6], &shell_code[3],10); + + return ret; +} + + + +// 转换hex字符串为一个byte +static int coder_strhex_to_byte(const char *str_hex) +{ + char buff[3]={0}; + buff[0]=str_hex[0]; + buff[1]=str_hex[1]; + return str_ahextoi(buff); +} +// 转换int字符串为一个整形 +static int coder_strint_to_byte(const char *str_int,int len) +{ + char buff[10]={0}; + if(len>10) return 0; + memcpy(buff,str_int,len); + return str_atoi(buff); +} + +// uid码转存储码 +int coder_uid_to_save(const char *uid_code,uint8_t *save_code) +{ + uint16_t ymd=0; + uint32_t feature=0; + save_code[0]=coder_strhex_to_byte(&uid_code[0]); + save_code[1]=coder_strhex_to_byte(&uid_code[4]); + ymd=coder_strint_to_byte(&uid_code[2],2)<<9; + ymd|=coder_strint_to_byte(&uid_code[6],2)<<5; + ymd|=coder_strint_to_byte(&uid_code[8],2); + save_code[2]=ymd>>8; + save_code[3]=ymd&0xff; + feature=uid_code[10]*10000; + feature+=coder_strint_to_byte(&uid_code[11],3)*100; + feature+=coder_strint_to_byte(&uid_code[13],2); + save_code[4]=feature>>16; + save_code[5]=feature>>8; + save_code[6]=feature&0xff; + save_code[7]=crc_crc8(save_code,7); + return 0; +} + +// 转换byte为hex字符串 +static int coder_byte_to_strhex(const uint8_t byte,char *str_hex) +{ + char buff[10]={0}; + sprintf(buff,"%02X",byte); + str_hex[0]=buff[0]; + str_hex[1]=buff[1]; + return 0; +} +// 转换int为int字符串 +static int coder_int_to_strint(const int n,char *str_int,int len) +{ + char buff[10]={0}; + sprintf(buff,"%05d",n); + memcpy(str_int,buff+(strlen(buff)-len),len); + return 0; +} + +// 存储码转uid +int coder_save_to_uid(const uint8_t *save_code,char *uid_code) +{ + uint16_t ymd=0; + uint32_t feature=0; + int ret=0; + if(save_code[7]!=crc_crc8(save_code,7)) + { + return -1; + } + ret|=coder_byte_to_strhex(save_code[0],&uid_code[0]); + ret|=coder_byte_to_strhex(save_code[1],&uid_code[4]); + ymd=(save_code[2]<<8)|save_code[3]; + feature=(save_code[4]<<16)|(save_code[5]<<8)|(save_code[6]); + ret|=coder_int_to_strint(ymd>>9,&uid_code[2],2); + ret|=coder_int_to_strint((ymd>>5)&0x0f,&uid_code[6],2); + ret|=coder_int_to_strint((ymd)&0x1f,&uid_code[8],2); + uid_code[10]=feature/10000; + ret|=coder_int_to_strint(feature%10000/100,&uid_code[11],3); + ret|=coder_int_to_strint(feature%100,&uid_code[14],2); + return ret; +} + + + +// uid码转管壳码 +int coder_uid_to_shell(const char *uid_code,char *shell_code) +{ + memset(shell_code,0,13); + // 添加雷管厂代号 + memcpy(&shell_code[0],&uid_code[4],2); + // 添加生产年份 + memcpy(&shell_code[2],&uid_code[3],1); + // 添加月日特征码流水号 + memcpy(&shell_code[3],&uid_code[6],10); + + return 0; +} + + + + + diff --git a/source/coder/coder_lib.h b/source/coder/coder_lib.h new file mode 100644 index 0000000..4dcabb5 --- /dev/null +++ b/source/coder/coder_lib.h @@ -0,0 +1,36 @@ +#ifndef coder_lib_h__ +#define coder_lib_h__ + + +#include "stdint.h" + + + + + + + +// 管壳码转uid码 +int coder_shell_to_uid(const char *year,const char *shell_code,char *uid_code); + +// uid码转存储码 +int coder_uid_to_save(const char *uid_code,uint8_t *save_code); + +// 存储码转uid +int coder_save_to_uid(const uint8_t *save_code,char *uid_code); + +// uid码转管壳码 +int coder_uid_to_shell(const char *uid_code,char *shell_code); + + + + + + + + + + + +#endif + diff --git a/source/main/compiler_info.h b/source/main/compiler_info.h index 21247f9..a6097a8 100644 --- a/source/main/compiler_info.h +++ b/source/main/compiler_info.h @@ -6,7 +6,7 @@ -#define BUILD_DATE "2023-06-09 18:00:05" +#define BUILD_DATE "2023-06-13 17:34:13" diff --git a/source/soft/mystring.c b/source/soft/mystring.c index ae6be68..9e41bb5 100644 --- a/source/soft/mystring.c +++ b/source/soft/mystring.c @@ -137,7 +137,7 @@ static int str_ainttoi(const char *s) } return ret*sig; } -static int str_ahextoi(const char *s) +int str_ahextoi(const char *s) { int ret=0; while(*s) @@ -164,7 +164,7 @@ static int str_ahextoi(const char *s) } int str_atoi(const char *s) { - if(s[0]=='0'&&s[1]=='x'){ + if(s[0]=='0'&&((s[1]=='x')||(s[1]=='X'))){ return str_ahextoi(&s[2]); }else{ return str_ainttoi(s); diff --git a/source/soft/mystring.h b/source/soft/mystring.h index 054906d..411bab4 100644 --- a/source/soft/mystring.h +++ b/source/soft/mystring.h @@ -12,6 +12,7 @@ extern "C" { const char *str_find_char_right(const char *s, char c); const char *str_find_char_right_p(const char *s,const char *const p, char c); const char *str_find_char_left(const char *const p,const char *s, char c); +int str_ahextoi(const char *s); int str_atoi(const char *s); int str_len(const char *s); int str_cpystr(char *s1, const char *s2, char c); diff --git a/source/task/handle_for_coder.c b/source/task/handle_for_coder.c index 83765cd..69c1c06 100644 --- a/source/task/handle_for_coder.c +++ b/source/task/handle_for_coder.c @@ -55,7 +55,7 @@ static void code_dolater(handle_def *h,uint8_t src,uint8_t cmd,array_def *data,c port_set_busy(h->p,0); port_timer_stop(h->p); DBG_LOG("slave:%d, start failed",port_get_addr(h->p)); - emit port_end_signal(h->p,h->p,0,0,"start failed"); + emit port_end_signal(h->p,h->p,0,-1,"start failed"); } }else if(cmd==0x18) { diff --git a/source/task/tran_for_coder2.c b/source/task/tran_for_coder2.c index 46e0b9c..1b69c03 100644 --- a/source/task/tran_for_coder2.c +++ b/source/task/tran_for_coder2.c @@ -8,18 +8,27 @@ #include "prot_uc.h" #include "handle_for_coder.h" #include "handle_for_checker.h" - +#include "coder_lib.h" +#include "PSDGenerate.h" // 这个文件解析跟赋码仪相关的命令 + + + typedef struct{ ucport_def u; uint8_t addrs_num; char year[10]; - char uid[10][20]; - uint8_t ack[380]; + struct{ + char shell_code[20]; + char uid_code[20]; + char password[10]; + uint8_t uid_pw_hex[15]; + }item[10]; + uint8_t ack[390]; uint8_t ack_num; void (*doexert)(ucport_def *u); }write_uid_def; @@ -35,14 +44,25 @@ static void write_uid_end(ucport_def *u,port_mcu *src,void *data,int ack,char *e DBG_WARN("addr err:%d",addr); return; } - w->ack[addr-1]=ack; + uint8_t *d=&w->ack[(addr-1)*39]; w->ack_num++; + d[0]=addr-1; + d[1]=ack; + if(ack==0) + { + memcpy(&d[2],w->item[addr-1].shell_code,13); + memcpy(&d[2+13],w->item[addr-1].uid_code,16); + memcpy(&d[2+13+16],w->item[addr-1].password,8); + }else{ + // 失败的数据全部填充'0' + memset(&d[2],'0',37); + } if(w->ack_num>=10) { array_def *a=arr_creat(); arr_append(a,w->addrs_num); - arr_appends(a,w->ack,380); - emit tran_send_signal(w->u.p,0x81,arr_temp(a)); + arr_appends(a,w->ack,390); + emit tran_send_signal(w->u.p,0x82,arr_temp(a)); tran_set_busy(w->u.p,0); } } @@ -60,9 +80,9 @@ static void write_uid_return_ok(void *p) { arr_append(a,i); arr_append(a,0); - arr_append_num(a,36,0); + arr_append_num(a,37,'0'); } - emit tran_send_signal(u->u.p,0x81,arr_temp(a)); + emit tran_send_signal(u->u.p,0x82,arr_temp(a)); tran_set_busy(u->u.p,0); } @@ -88,13 +108,22 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data) // 数据固定140字节,如果不检测某通道,则该通道填充占位符 for(int i=0;i<10;i++) { - memcpy(u->uid[i],arr_data(data)+1+i*14,14); + memcpy(u->item[i].shell_code,arr_data(data)+1+i*14,14); + // 生成uid码 + coder_shell_to_uid(u->year,u->item[i].shell_code,u->item[i].uid_code); + // 生成存储码 + coder_uid_to_save(u->item[i].uid_code,u->item[i].uid_pw_hex); + // 生成密码 + GetPasswordByUidCode((uint8_t *)u->item[i].uid_code,&u->item[i].uid_pw_hex[8]); + // 生成密码字符串 + sprintf(u->item[i].password,"%02X%02X%02X%02X",u->item[i].uid_pw_hex[8], + u->item[i].uid_pw_hex[9],u->item[i].uid_pw_hex[10],u->item[i].uid_pw_hex[11]); } // 默认失败 for(int i=0;i<10;i++) { - u->ack[i*38+0]=i; - u->ack[i*38+1]=1; + u->ack[i*39+0]=i; + u->ack[i*39+1]=1; } tran_set_busy(t,1); for(int i=0;i<10;i++) @@ -103,7 +132,7 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data) port_mcu *mcu=tran_get_portm(u->u.p,i); // 这里打开赋码操作 if(mcu){ - //port_start(mcu,code_creat(15,8,&u->uid[i])); + port_start(mcu,code_creat(8,4,u->item[i].uid_pw_hex)); } } } @@ -114,7 +143,7 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data) emit tran_reply_signal(u->u.p,arr_temp(a)); // test:稍后返回成功 - later_execute(write_uid_return_ok,u,500); + //later_execute(write_uid_return_ok,u,500); return (ucport_def *)u; } @@ -124,6 +153,101 @@ transmit_export(ym_checker,0x02,write_uid) +// 复检完成 +static void write_uid2_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str) +{ + write_uid_def *w=(write_uid_def *)u; + uint8_t addr=port_get_addr(src); + if(addr<=0||addr>10){ + DBG_WARN("addr err:%d",addr); + return; + } + uint8_t *d=&w->ack[(addr-1)*39]; + w->ack_num++; + d[0]=addr-1; + d[1]=ack; + if(ack==0) + { + memcpy(&d[2],w->item[addr-1].shell_code,13); + memcpy(&d[2+13],w->item[addr-1].uid_code,16); + memcpy(&d[2+13+16],w->item[addr-1].password,8); + }else{ + // 失败的数据全部填充'0' + memset(&d[2],'0',37); + } + if(w->ack_num>=10) + { + array_def *a=arr_creat(); + arr_append(a,w->addrs_num); + for(int i=0;i<10;i++) + { + uint8_t *d=&w->ack[i*39]; + arr_appends(a,d,2); + } + emit tran_send_signal(w->u.p,0x83,arr_temp(a)); + tran_set_busy(w->u.p,0); + } +} + +static ucport_def *write_uid2(tran_def *t, uint8_t cmd,array_def *data) +{ + if(arr_length(data)<242){ + DBG_WARN("cmd format err."); + return 0; + } + write_uid_def *u=calloc(1,sizeof(write_uid_def)); + u->u.p=t; + u->u.del=write_del; + u->u.doend=write_uid2_end; + u->addrs_num=arr_get(data,0); + memcpy(u->year,arr_data(data)+1,4); + // 数据固定140字节,如果不检测某通道,则该通道填充占位符 + for(int i=0;i<10;i++) + { + memcpy(u->item[i].shell_code,arr_data(data)+1+i*14,14); + // 生成uid码 + coder_shell_to_uid(u->year,u->item[i].shell_code,u->item[i].uid_code); + // 生成存储码 + coder_uid_to_save(u->item[i].uid_code,u->item[i].uid_pw_hex); + // 生成密码 + GetPasswordByUidCode((uint8_t *)u->item[i].uid_code,&u->item[i].uid_pw_hex[8]); + // 生成密码字符串 + sprintf(u->item[i].password,"%02X%02X%02X%02X",u->item[i].uid_pw_hex[8], + u->item[i].uid_pw_hex[9],u->item[i].uid_pw_hex[10],u->item[i].uid_pw_hex[11]); + } + // 默认失败 + for(int i=0;i<10;i++) + { + u->ack[i*39+0]=i; + u->ack[i*39+1]=1; + } + tran_set_busy(t,1); + for(int i=0;i<10;i++) + { + if(1){ + port_mcu *mcu=tran_get_portm(u->u.p,i); + // 这里打开赋码操作 + if(mcu){ + port_start(mcu,code_creat(8,4,u->item[i].uid_pw_hex)); + } + } + } + + array_def *a=arr_creat(); + arr_append(a,u->addrs_num); + arr_append(a,0); + emit tran_reply_signal(u->u.p,arr_temp(a)); + + // test:稍后返回成功 + //later_execute(write_uid_return_ok,u,500); + + return (ucport_def *)u; +} + +// 复检,与注码动作相同,但返回值不同 +transmit_export(ym_checker,0x03,write_uid2) + + @@ -152,8 +276,10 @@ static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_s return; } uint8_t *ack_d=&w->ack[(addr-1)*6]; + ack_d[0]=addr-1; ack_d[1]=ack; // TODO: 还有4字节数据 + w->ack_num++; if(w->ack_num>=10) { @@ -216,9 +342,9 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data) if(1){ port_mcu *mcu=tran_get_portm(u->u.p,i); // 这里打开检测 -// if(mcu){ -// port_start(mcu,check_creat(check_scheme())); -// } + if(mcu){ + port_start(mcu,check_creat(check_scheme())); + } } } @@ -229,7 +355,7 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data) emit tran_reply_signal(u->u.p,arr_temp(a)); // test:稍后返回成功 - later_execute(check_return_ok,u,500); + //later_execute(check_return_ok,u,500); return (ucport_def *)u; }