feat(uart): 分离ETH与Cat1通讯,支持UART1/Cat1/Debug互斥切换
Breaking Changes: - USART1(PA11/PA12)改为Cat1(115200)/Debug(500000)共享,SGM3157控制 - USART4(PB09/PC13)独家给ETH(115200),不再共享 - 新增EthTask独立状态机,与CatOneTask解耦运行 - 上电默认Comm=CATONE_COMM,dch=RS485_CH1 Details: - feat: 新增EthTask.c/h,ETH状态机(8态)独立运行 - refactor: CatOneTask移除ETH代码,AT发送/接收走USART1 - feat: comm cat1/eth命令增加USART1占用互斥检查 - feat: dch dbg命令增加USART1占用互斥检查 - feat: rt_kprintf根据dch通道自动路由(USART1/RS485) - feat: 新增eth on/off调试打印开关命令 - fix: 两个状态机按Comm模式判断休眠,避免误发AT - fix: bsp.c修复IRQ回调函数名不匹配(BusFault隐患) - fix: PB08(PortB Pin08)PORT_Init触发复位,改用外部上拉+POUTE单bit使能 - fix: DebugCmd命令表DEBUG_CMD_CNT与实际条目数不符(crash风险) - chore: 删除InfTest死函数、重复include、无用宏声明、EthRev_Sem等冗余代码 - chore: 更正中文标点(!→! ,→,)
This commit is contained in:
@@ -135,7 +135,7 @@
|
|||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>JL2CM3</Key>
|
<Key>JL2CM3</Key>
|
||||||
<Name>-U4294967295 -O78 -S4 -ZTIFSpeedSel2000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_otp.FLM -FS03000C00 -FL03FC -FP0($$Device:HC32F460KETA$FlashARM\HC32F460_otp.FLM) -FF1HC32F460_512K.FLM -FS10 -FL180000 -FP1($$Device:HC32F460KETA$FlashARM\HC32F460_512K.FLM)</Name>
|
<Name>-U12345678 -O78 -S4 -ZTIFSpeedSel2000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_otp.FLM -FS03000C00 -FL03FC -FP0($$Device:HC32F460KETA$FlashARM\HC32F460_otp.FLM) -FF1HC32F460_512K.FLM -FS10 -FL180000 -FP1($$Device:HC32F460KETA$FlashARM\HC32F460_512K.FLM)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
<DebugFlag>
|
<DebugFlag>
|
||||||
<trace>0</trace>
|
<trace>0</trace>
|
||||||
<periodic>1</periodic>
|
<periodic>1</periodic>
|
||||||
<aLwin>1</aLwin>
|
<aLwin>0</aLwin>
|
||||||
<aCover>0</aCover>
|
<aCover>0</aCover>
|
||||||
<aSer1>0</aSer1>
|
<aSer1>0</aSer1>
|
||||||
<aSer2>0</aSer2>
|
<aSer2>0</aSer2>
|
||||||
@@ -410,7 +410,7 @@
|
|||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>JL2CM3</Key>
|
<Key>JL2CM3</Key>
|
||||||
<Name>-U4294967295 -O78 -S4 -ZTIFSpeedSel2000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO14 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_otp.FLM -FS03000C00 -FL03FC -FP0($$Device:HC32F460KETA$FlashARM\HC32F460_otp.FLM) -FF1HC32F460_512K.FLM -FS10 -FL180000 -FP1($$Device:HC32F460KETA$FlashARM\HC32F460_512K.FLM)</Name>
|
<Name>-U12345678 -O78 -S4 -ZTIFSpeedSel2000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO14 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_otp.FLM -FS03000C00 -FL03FC -FP0($$Device:HC32F460KETA$FlashARM\HC32F460_otp.FLM) -FF1HC32F460_512K.FLM -FS10 -FL180000 -FP1($$Device:HC32F460KETA$FlashARM\HC32F460_512K.FLM)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -428,40 +428,7 @@
|
|||||||
<Name></Name>
|
<Name></Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>1004</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>..\source\User\Src\Public.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>1006</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>..\source\User\Src\Public.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
@@ -513,7 +480,7 @@
|
|||||||
<DebugFlag>
|
<DebugFlag>
|
||||||
<trace>0</trace>
|
<trace>0</trace>
|
||||||
<periodic>1</periodic>
|
<periodic>1</periodic>
|
||||||
<aLwin>1</aLwin>
|
<aLwin>0</aLwin>
|
||||||
<aCover>0</aCover>
|
<aCover>0</aCover>
|
||||||
<aSer1>0</aSer1>
|
<aSer1>0</aSer1>
|
||||||
<aSer2>0</aSer2>
|
<aSer2>0</aSer2>
|
||||||
@@ -729,6 +696,18 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>14</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\source\User\Src\EthTask.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>EthTask.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
@@ -739,7 +718,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>14</FileNumber>
|
<FileNumber>15</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -751,7 +730,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>15</FileNumber>
|
<FileNumber>16</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -763,7 +742,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>16</FileNumber>
|
<FileNumber>17</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -775,7 +754,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>17</FileNumber>
|
<FileNumber>18</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -787,7 +766,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>18</FileNumber>
|
<FileNumber>19</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -799,7 +778,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>19</FileNumber>
|
<FileNumber>20</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -811,7 +790,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>20</FileNumber>
|
<FileNumber>21</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -823,7 +802,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>21</FileNumber>
|
<FileNumber>22</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -835,7 +814,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>22</FileNumber>
|
<FileNumber>23</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -847,7 +826,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>23</FileNumber>
|
<FileNumber>24</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -859,7 +838,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>24</FileNumber>
|
<FileNumber>25</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -871,7 +850,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>25</FileNumber>
|
<FileNumber>26</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -883,7 +862,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>26</FileNumber>
|
<FileNumber>27</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -895,7 +874,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>27</FileNumber>
|
<FileNumber>28</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -907,7 +886,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>28</FileNumber>
|
<FileNumber>29</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -919,7 +898,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>29</FileNumber>
|
<FileNumber>30</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -931,7 +910,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>30</FileNumber>
|
<FileNumber>31</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -951,7 +930,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>31</FileNumber>
|
<FileNumber>32</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -971,7 +950,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>5</GroupNumber>
|
<GroupNumber>5</GroupNumber>
|
||||||
<FileNumber>32</FileNumber>
|
<FileNumber>33</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -983,7 +962,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>5</GroupNumber>
|
<GroupNumber>5</GroupNumber>
|
||||||
<FileNumber>33</FileNumber>
|
<FileNumber>34</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1003,7 +982,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>34</FileNumber>
|
<FileNumber>35</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1015,7 +994,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>35</FileNumber>
|
<FileNumber>36</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1027,7 +1006,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>36</FileNumber>
|
<FileNumber>37</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1039,7 +1018,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>37</FileNumber>
|
<FileNumber>38</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1059,7 +1038,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>38</FileNumber>
|
<FileNumber>39</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1089,7 +1068,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>::RTOS</GroupName>
|
<GroupName>::RTOS</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>1</RteFlg>
|
<RteFlg>1</RteFlg>
|
||||||
|
|||||||
@@ -493,6 +493,11 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\source\User\Src\utils.c</FilePath>
|
<FilePath>..\source\User\Src\utils.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>EthTask.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\User\Src\EthTask.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
@@ -1419,6 +1424,11 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\source\User\Src\utils.c</FilePath>
|
<FilePath>..\source\User\Src\utils.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>EthTask.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\User\Src\EthTask.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
|
|||||||
@@ -11,6 +11,9 @@
|
|||||||
#include <rthw.h>
|
#include <rthw.h>
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
extern GateWayPara_t GateWay;
|
||||||
|
|
||||||
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
||||||
/*
|
/*
|
||||||
@@ -73,16 +76,24 @@ void rt_hw_board_init(void)
|
|||||||
static int uart_init(void)
|
static int uart_init(void)
|
||||||
{
|
{
|
||||||
//#error "TODO 2: Enable the hardware uart and config baudrate."
|
//#error "TODO 2: Enable the hardware uart and config baudrate."
|
||||||
DbgUart_Config(500000);
|
DbgOrCat1Uart_Config(500000);
|
||||||
|
// RS485Ch1_Config(500000);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
INIT_BOARD_EXPORT(uart_init);
|
INIT_BOARD_EXPORT(uart_init);
|
||||||
|
|
||||||
void rt_hw_console_output(const char *str)
|
void rt_hw_console_output(const char *str)
|
||||||
{
|
{
|
||||||
//#error "TODO 3: Output the string 'str' through the uart."
|
|
||||||
rt_enter_critical();
|
rt_enter_critical();
|
||||||
DebugUartSend((uint8_t *)str, strlen(str));
|
if(GateWay.ConfigPara.DebugChannel == DEBUG_CH_RS485_1) {
|
||||||
|
RS485Ch1UartSend((uint8_t *)str, strlen(str));
|
||||||
|
}
|
||||||
|
else if(GateWay.ConfigPara.DebugChannel == DEBUG_CH_RS485_2) {
|
||||||
|
RS485Ch2UartSend((uint8_t *)str, strlen(str));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DebugOrCat1UartSend((uint8_t *)str, strlen(str));
|
||||||
|
}
|
||||||
rt_exit_critical();
|
rt_exit_critical();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
#include "CatOneTask.h"
|
#include "CatOneTask.h"
|
||||||
|
#include "EthTask.h"
|
||||||
#include "RS485Task.h"
|
#include "RS485Task.h"
|
||||||
#include "Public.h"
|
#include "Public.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
#define DBG_RX_LEN_MAX 128
|
#define DBG_RX_LEN_MAX 128
|
||||||
//#define DBG_LOG(...) rt_kprintf(__VA_ARGS__)
|
//#define DBG_LOG(...) rt_kprintf(__VA_ARGS__)
|
||||||
#define DEBUG_CMD_CNT 31
|
#define DEBUG_CMD_CNT 29
|
||||||
#define DEBUG_BUFF_SIZE_MAX 512
|
#define DEBUG_BUFF_SIZE_MAX 512
|
||||||
|
|
||||||
#define DEBUG_BUFSIZE 200
|
#define DEBUG_BUFSIZE 200
|
||||||
@@ -106,7 +107,7 @@ void Debug_Thread_Entry(void *parameter)
|
|||||||
if(DebugRev_Sem == RT_NULL) {
|
if(DebugRev_Sem == RT_NULL) {
|
||||||
rt_kprintf("DebugRev Sem Create Failed!\r\n");
|
rt_kprintf("DebugRev Sem Create Failed!\r\n");
|
||||||
}
|
}
|
||||||
rt_kprintf("DebugRev Thread is running!\r\n");
|
rt_kprintf("DebugRev Thread is running!\r\n");
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
result = rt_sem_take(DebugRev_Sem, RT_WAITING_FOREVER);
|
result = rt_sem_take(DebugRev_Sem, RT_WAITING_FOREVER);
|
||||||
@@ -119,13 +120,18 @@ void Debug_Thread_Entry(void *parameter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RS485Ch2RxIrqCallback
|
* 函数名称: DbgOrCat1RxIrqCallback
|
||||||
* 功能描述: RS485通道1中断处理回调函数
|
* 功能描述: 调试和Cat1中断处理回调函数
|
||||||
* 参 数: rData 接收到的数据
|
* 参 数: rData 接收到的数据
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void DbgRxIrqCallback(uint8_t rData)
|
void DbgOrCat1RxIrqCallback(uint8_t rData)
|
||||||
{
|
{
|
||||||
|
if(GateWay->ConfigPara.Comm == CATONE_COMM) {
|
||||||
|
Cat1IrqCallback(rData);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(DebugRxTimeOut1mSCnt == 0)
|
if(DebugRxTimeOut1mSCnt == 0)
|
||||||
DebugRxLen = 0;
|
DebugRxLen = 0;
|
||||||
|
|
||||||
@@ -136,8 +142,13 @@ void DbgRxIrqCallback(uint8_t rData)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DebugRxOverhandler(void)
|
void DebugOrCat1RxOverhandler(void)
|
||||||
{
|
{
|
||||||
|
if(GateWay->ConfigPara.Comm == CATONE_COMM) {
|
||||||
|
Cat1OverHandler();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(DebugRxTimeOut1mSCnt > 0)
|
if(DebugRxTimeOut1mSCnt > 0)
|
||||||
DebugRxTimeOut1mSCnt--;
|
DebugRxTimeOut1mSCnt--;
|
||||||
|
|
||||||
@@ -247,6 +258,27 @@ void DebugCmdCat1OnOff(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebugCmdEthOnOff(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
DBG_LOG("\r\n");
|
||||||
|
if(argc < 2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(strcmp(argv[1], "?") == 0) {
|
||||||
|
DBG_LOG("Debug Cmd: eth arg1\r\n");
|
||||||
|
DBG_LOG(" brief --> Turn the Eth_DBG on or off.\r\n");
|
||||||
|
DBG_LOG(" arg1 --> on/off\r\n\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strcmp(argv[1], "on") == 0) {
|
||||||
|
ETHOnOff(true);
|
||||||
|
}
|
||||||
|
else if(strcmp(argv[1], "off") == 0) {
|
||||||
|
ETHOnOff(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DebugCmdCat1OnOff
|
* 函数名称: DebugCmdCat1OnOff
|
||||||
* 功能描述: CAT1调试信息开关
|
* 功能描述: CAT1调试信息开关
|
||||||
@@ -682,9 +714,15 @@ void DebugCmdSetComm(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(strcmp(argv[1], "cat1") == 0) {
|
if(strcmp(argv[1], "cat1") == 0) {
|
||||||
|
if(GateWay->ConfigPara.DebugChannel == DEBUG_CH_DBG) {
|
||||||
|
DBG_LOG("dch is dbg, USART1 occupied. Please switch dch to ch1/ch2 first.\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
GateWay->SvrRegFlag = false;
|
GateWay->SvrRegFlag = false;
|
||||||
GateWay->ConfigPara.Comm = CATONE_COMM;
|
GateWay->ConfigPara.Comm = CATONE_COMM;
|
||||||
ETHStop();
|
ETHStop();
|
||||||
|
ETH_OFF();
|
||||||
|
DbgOrCat1Uart_Config(115200);
|
||||||
CAT1_ON();
|
CAT1_ON();
|
||||||
CatOneReset();
|
CatOneReset();
|
||||||
DBG_LOG("Set the communication method to Cat1.\r\n");
|
DBG_LOG("Set the communication method to Cat1.\r\n");
|
||||||
@@ -697,45 +735,17 @@ void DebugCmdSetComm(int argc, char *argv[])
|
|||||||
CatOneStop();
|
CatOneStop();
|
||||||
rt_thread_delay(3000);
|
rt_thread_delay(3000);
|
||||||
CAT1_PWR_KEY_SET();
|
CAT1_PWR_KEY_SET();
|
||||||
|
DBG_ON();
|
||||||
}
|
}
|
||||||
GateWay->SvrRegFlag = false;
|
GateWay->SvrRegFlag = false;
|
||||||
GateWay->ConfigPara.Comm = ETH_COMM;
|
GateWay->ConfigPara.Comm = ETH_COMM;
|
||||||
|
DbgOrCat1Uart_Config(500000);
|
||||||
ETH_ON();
|
ETH_ON();
|
||||||
ETHReset();
|
ETHReset();
|
||||||
WritePara((uint8_t *)&GateWay->ConfigPara, sizeof(GWConfigPara_t));
|
WritePara((uint8_t *)&GateWay->ConfigPara, sizeof(GWConfigPara_t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
|
||||||
* 函数名称: DebugCmdSetCollTime
|
|
||||||
* 功能描述: 设置数据采集间隔
|
|
||||||
* 参 数: argc, 输入参数数量
|
|
||||||
argv, 输入参数
|
|
||||||
* 返 回 值: 无
|
|
||||||
*****************************************************************************************/
|
|
||||||
void DebugCmdSetCollTime(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
DBG_LOG("\r\n");
|
|
||||||
if(argc < 2)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(strcmp(argv[1], "?") == 0) {
|
|
||||||
DBG_LOG("Debug Cmd: sct para\r\n");
|
|
||||||
DBG_LOG(" brief --> Set the data collection interval.\r\n");
|
|
||||||
DBG_LOG(" arg1 --> para: (10~3600),Set the range from 10 to 3600 seconds.\r\n\r\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int time = atoi(argv[1]);
|
|
||||||
if(time < 10 || time > 7200) {
|
|
||||||
DBG_LOG("RS485 Cmd Para Error!\r\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
GateWay->ConfigPara.CommUnitReadInterval = time;
|
|
||||||
DBG_LOG("Set the collection time interval to %d seconds.\r\n", time);
|
|
||||||
WritePara((uint8_t *)&GateWay->ConfigPara, sizeof(GWConfigPara_t));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DebugCmdReadHisData
|
* 函数名称: DebugCmdReadHisData
|
||||||
* 功能描述: 读取历史数据
|
* 功能描述: 读取历史数据
|
||||||
@@ -1166,7 +1176,12 @@ void DebugCmdSelDebugChannel(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(strcmp(argv[1], "dbg") == 0) {
|
if(strcmp(argv[1], "dbg") == 0) {
|
||||||
|
if(GateWay->ConfigPara.Comm == CATONE_COMM) {
|
||||||
|
DBG_LOG("comm is cat1, USART1 occupied. Please switch comm to eth first.\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
DBG_LOG("Select Debug Channel is dbg\r\n");
|
DBG_LOG("Select Debug Channel is dbg\r\n");
|
||||||
|
DbgOrCat1Uart_Config(500000);
|
||||||
GateWay->ConfigPara.DebugChannel = DEBUG_CH_DBG;
|
GateWay->ConfigPara.DebugChannel = DEBUG_CH_DBG;
|
||||||
WritePara((uint8_t *)&GateWay->ConfigPara, sizeof(GWConfigPara_t));
|
WritePara((uint8_t *)&GateWay->ConfigPara, sizeof(GWConfigPara_t));
|
||||||
}
|
}
|
||||||
@@ -1948,6 +1963,7 @@ const DBGFunType DebugFun[DEBUG_CMD_CNT] = {
|
|||||||
"help", DebugCmdHelp,
|
"help", DebugCmdHelp,
|
||||||
"main", DebugCmdMainOnOff,
|
"main", DebugCmdMainOnOff,
|
||||||
"cat1", DebugCmdCat1OnOff,
|
"cat1", DebugCmdCat1OnOff,
|
||||||
|
"eth", DebugCmdEthOnOff,
|
||||||
"rs485", DebugCmdRS485Ctrl,
|
"rs485", DebugCmdRS485Ctrl,
|
||||||
"cudel", DebugCmdDelCommUnit,
|
"cudel", DebugCmdDelCommUnit,
|
||||||
"culs", DebugCmdLsCommUnit,
|
"culs", DebugCmdLsCommUnit,
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
#define __DEBUG_CMD_H
|
#define __DEBUG_CMD_H
|
||||||
|
|
||||||
void Debug_Thread_Entry(void *parameter);
|
void Debug_Thread_Entry(void *parameter);
|
||||||
void DebugRxOverhandler(void);
|
void DebugOrCat1RxOverhandler(void);
|
||||||
void Debug_Printf(char *format, ...);
|
void Debug_Printf(char *format, ...);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -6,23 +6,6 @@
|
|||||||
#define CAT_ONE_REV_TIMEOUT_MAX (10 * 60 * 1000)
|
#define CAT_ONE_REV_TIMEOUT_MAX (10 * 60 * 1000)
|
||||||
#define CAT_ONE_REV_LEN_MAX 512
|
#define CAT_ONE_REV_LEN_MAX 512
|
||||||
|
|
||||||
#define CAT_ONE_POW_ON() CAT1_POW_ON()
|
|
||||||
#define CAT_ONE_POW_OFF() CAT1_POW_OFF()
|
|
||||||
|
|
||||||
#define CAT_ONE_LINKA_GET() CAT1_LINKA_GET()
|
|
||||||
#define CAT_ONE_LINKB_GET() CAT1_LINKB_GET()
|
|
||||||
|
|
||||||
#define CAT_ONE_DELAY_1MS(X)
|
|
||||||
|
|
||||||
// ETH状态机相关宏定义
|
|
||||||
#define ETH_RESET_DELAY_TIME_MAX (5 * 60 * 1000)
|
|
||||||
#define ETH_LINK_WAIT_TIME_MAX (10 * 1000)
|
|
||||||
#define ETH_REG_TIMEOUT_MAX (30 * 1000)
|
|
||||||
#define ETH_SEND_TIMEOUT_MAX (5 * 1000)
|
|
||||||
#define ETH_RECV_TIMEOUT_MAX (60 * 1000)
|
|
||||||
#define ETH_SEND_RETRY_MAX 3
|
|
||||||
#define ETH_FIRST_REG_DELAY (5 * 1000)
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CAT_ONE_AT_NULL,
|
CAT_ONE_AT_NULL,
|
||||||
CAT_ONE_AT, //开机检测
|
CAT_ONE_AT, //开机检测
|
||||||
@@ -58,17 +41,6 @@ typedef enum {
|
|||||||
CAT_ONE_CLOSE_TCP,
|
CAT_ONE_CLOSE_TCP,
|
||||||
}CatOneStatus_m;
|
}CatOneStatus_m;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
ETH_IDEL,
|
|
||||||
ETH_RESET,
|
|
||||||
ETH_WAIT_LINK,
|
|
||||||
ETH_REG_SVR,
|
|
||||||
ETH_WAIT_SEND,
|
|
||||||
ETH_SEND_DATA,
|
|
||||||
ETH_WAIT_RECV,
|
|
||||||
ETH_OFF,
|
|
||||||
}EthStatus_m;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CAT_ONE_RET_NULL,
|
CAT_ONE_RET_NULL,
|
||||||
CAT_ONE_RET_OK,
|
CAT_ONE_RET_OK,
|
||||||
@@ -110,30 +82,18 @@ typedef struct {
|
|||||||
|
|
||||||
GateWayPara GateWay;
|
GateWayPara GateWay;
|
||||||
DataRevCallBack CatOneRevCallBack;
|
DataRevCallBack CatOneRevCallBack;
|
||||||
|
|
||||||
// ETH状态机相关字段
|
|
||||||
EthStatus_m EthStatus;
|
|
||||||
uint32_t EthResetDelayCnt;
|
|
||||||
uint32_t EthLinkWaitCnt;
|
|
||||||
uint32_t EthRecvTimeoutCnt;
|
|
||||||
uint8_t EthSendRetryCnt;
|
|
||||||
bool EthFirstRegFlag;
|
|
||||||
}CatOne_t, *pCatOne_t;
|
}CatOne_t, *pCatOne_t;
|
||||||
|
|
||||||
CatOneRetStatus_m CatOneSend(uint8_t *sData, uint16_t sLen);
|
|
||||||
void CatOneStart(void);
|
|
||||||
void CatOneStop(void);
|
void CatOneStop(void);
|
||||||
void CatOneReset(void);
|
void CatOneReset(void);
|
||||||
void ETHStop(void);
|
|
||||||
void ETHReset(void);
|
|
||||||
void Cat1DBGOnOff(bool OnOff);
|
void Cat1DBGOnOff(bool OnOff);
|
||||||
void CatOneGetLocationInfo(int *Longitude, int *Latitude);
|
void CatOneGetLocationInfo(int *Longitude, int *Latitude);
|
||||||
void CatOneGetIMEIAndSIM(char *Imei, char *Sim);
|
void CatOneGetIMEIAndSIM(char *Imei, char *Sim);
|
||||||
bool CatOneGetStatus(void);
|
bool CatOneGetStatus(void);
|
||||||
bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen);
|
bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen);
|
||||||
void CatOneTriggerRegister(void);
|
void CatOneTriggerRegister(void);
|
||||||
void ETHTriggerRegister(void);
|
void CatOne_Thread_Entry(void *parameter);
|
||||||
void CatOne_Eth_Thread_Entry(void *parameter);
|
void Cat1IrqCallback(uint8_t rData);
|
||||||
void EthRxOverhandler(void);
|
void Cat1OverHandler(void);
|
||||||
void CatReadImeiOrSim(char *Imei, char *Sim);
|
void CatReadImeiOrSim(char *Imei, char *Sim);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#ifndef __ETH_TASK_H
|
||||||
|
#define __ETH_TASK_H
|
||||||
|
#include "main.h"
|
||||||
|
#include "Public.h"
|
||||||
|
|
||||||
|
#define ETH_RX_LEN_MAX 512
|
||||||
|
|
||||||
|
#define ETH_RESET_DELAY_TIME_MAX (5 * 60 * 1000)
|
||||||
|
#define ETH_LINK_WAIT_TIME_MAX (10 * 1000)
|
||||||
|
#define ETH_RECV_TIMEOUT_MAX (60 * 1000)
|
||||||
|
#define ETH_SEND_RETRY_MAX 3
|
||||||
|
#define ETH_FIRST_REG_DELAY (5 * 1000)
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
ETH_IDEL,
|
||||||
|
ETH_RESET,
|
||||||
|
ETH_WAIT_LINK,
|
||||||
|
ETH_REG_SVR,
|
||||||
|
ETH_WAIT_SEND,
|
||||||
|
ETH_SEND_DATA,
|
||||||
|
ETH_WAIT_RECV,
|
||||||
|
ETH_OFF,
|
||||||
|
} EthStatus_m;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EthStatus_m Status;
|
||||||
|
uint32_t ResetDelayCnt;
|
||||||
|
uint32_t LinkWaitCnt;
|
||||||
|
uint32_t RecvTimeoutCnt;
|
||||||
|
uint8_t SendRetryCnt;
|
||||||
|
bool FirstRegFlag;
|
||||||
|
|
||||||
|
GateWayPara GateWay;
|
||||||
|
|
||||||
|
uint8_t TxBuff[ETH_RX_LEN_MAX];
|
||||||
|
uint16_t TxLen;
|
||||||
|
uint8_t Payload[ETH_RX_LEN_MAX];
|
||||||
|
char SendASCII[ETH_RX_LEN_MAX * 2];
|
||||||
|
} EthTask_t;
|
||||||
|
|
||||||
|
void Eth_Thread_Entry(void *parameter);
|
||||||
|
void EthIrqCallbackHandler(uint8_t rData);
|
||||||
|
void EthOverHandler(void);
|
||||||
|
void ETHStop(void);
|
||||||
|
void ETHReset(void);
|
||||||
|
void ETHTriggerRegister(void);
|
||||||
|
#endif
|
||||||
@@ -63,36 +63,62 @@
|
|||||||
|
|
||||||
#define RTC_IRQn Int001_IRQn
|
#define RTC_IRQn Int001_IRQn
|
||||||
|
|
||||||
#define LORA_DIO0_IRQn Int005_IRQn
|
|
||||||
|
|
||||||
#define DBGUART_IRQn Int006_IRQn
|
|
||||||
#define DBGUART_EI_IRQn Int007_IRQn
|
|
||||||
|
|
||||||
#define RS485CH1_UART_IRQn Int008_IRQn
|
|
||||||
#define RS485CH1_UART_EI_IRQn Int009_IRQn
|
|
||||||
|
|
||||||
#define RS485CH2_UART_IRQn Int010_IRQn
|
|
||||||
#define RS485CH2_UART_EI_IRQn Int011_IRQn
|
|
||||||
|
|
||||||
#define ETH_OR_CAT1_UART_IRQn Int012_IRQn
|
|
||||||
#define ETH_OR_CAT1_UART_EI_IRQn Int013_IRQn
|
|
||||||
|
|
||||||
#define DBG_RXPIN_IRQn Int002_IRQn
|
#define DBG_RXPIN_IRQn Int002_IRQn
|
||||||
|
|
||||||
|
#define LORA_DIO0_IRQn Int005_IRQn
|
||||||
|
|
||||||
//DEBUG
|
#define DBG_OR_CAT1_UART_IRQn Int006_IRQn
|
||||||
#define DBG_USART_CH (M4_USART1)
|
#define DBG_OR_CAT1_UART_EI_IRQn Int007_IRQn
|
||||||
#define DBG_USART_RX_PORT (PortA)
|
|
||||||
#define DBG_USART_RX_PIN (Pin11)
|
#define ETH_UART_IRQn Int008_IRQn
|
||||||
#define DBG_USART_TX_PORT (PortA)
|
#define ETH_UART_EI_IRQn Int009_IRQn
|
||||||
#define DBG_USART_TX_PIN (Pin12)
|
|
||||||
#define DBG_USART_RX_FUNC (Func_Usart1_Rx)
|
#define RS485CH1_UART_IRQn Int010_IRQn
|
||||||
#define DBG_USART_TX_FUNC (Func_Usart1_Tx)
|
#define RS485CH1_UART_EI_IRQn Int011_IRQn
|
||||||
#define DBG_USART_RI_NUM (INT_USART1_RI)
|
|
||||||
#define DBG_USART_EI_NUM (INT_USART1_EI)
|
#define RS485CH2_UART_IRQn Int012_IRQn
|
||||||
#define DBG_USART_TI_NUM (INT_USART1_TI)
|
#define RS485CH2_UART_EI_IRQn Int013_IRQn
|
||||||
#define DBG_USART_TCI_NUM (INT_USART1_TCI)
|
|
||||||
#define DBG_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
|
|
||||||
|
//DEBUG or CAT1
|
||||||
|
#define DBG_OR_CAT1_USART_CH (M4_USART1)
|
||||||
|
#define DBG_OR_CAT1_USART_RX_PORT (PortA)
|
||||||
|
#define DBG_OR_CAT1_USART_RX_PIN (Pin11)
|
||||||
|
#define DBG_OR_CAT1_USART_TX_PORT (PortA)
|
||||||
|
#define DBG_OR_CAT1_USART_TX_PIN (Pin12)
|
||||||
|
#define DBG_OR_CAT1_USART_RX_FUNC (Func_Usart1_Rx)
|
||||||
|
#define DBG_OR_CAT1_USART_TX_FUNC (Func_Usart1_Tx)
|
||||||
|
#define DBG_OR_CAT1_USART_RI_NUM (INT_USART1_RI)
|
||||||
|
#define DBG_OR_CAT1_USART_EI_NUM (INT_USART1_EI)
|
||||||
|
#define DBG_OR_CAT1_USART_TI_NUM (INT_USART1_TI)
|
||||||
|
#define DBG_OR_CAT1_USART_TCI_NUM (INT_USART1_TCI)
|
||||||
|
#define DBG_OR_CAT1_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
|
||||||
|
|
||||||
|
#define DBG_OR_CAT1_CTRL_PORT (PortB)
|
||||||
|
#define DBG_OR_CAT1_CTRL_PIN (Pin08)
|
||||||
|
|
||||||
|
#if (HARDWARE_VERSION == 12)
|
||||||
|
#define DBG_ON() PORT_SetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||||
|
#define CAT1_ON() PORT_ResetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||||
|
#elif (HARDWARE_VERSION >= 13)
|
||||||
|
#define DBG_ON() PORT_ResetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||||
|
#define CAT1_ON() PORT_SetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CAT1_PWR_KEY_PORT (PortA)
|
||||||
|
#define CAT1_PWR_KEY_PIN (Pin03)
|
||||||
|
#define CAT1_PWR_KEY_CLR() PORT_SetBits(CAT1_PWR_KEY_PORT, CAT1_PWR_KEY_PIN)
|
||||||
|
#define CAT1_PWR_KEY_SET() PORT_ResetBits(CAT1_PWR_KEY_PORT, CAT1_PWR_KEY_PIN)
|
||||||
|
|
||||||
|
#define CAT1_RESET_PORT (PortA)
|
||||||
|
#define CAT1_RESET_PIN (Pin00)
|
||||||
|
#define CAT1_RESET_CLR() PORT_SetBits(CAT1_RESET_PORT, CAT1_RESET_PIN)
|
||||||
|
#define CAT1_RESET_SET() PORT_ResetBits(CAT1_RESET_PORT, CAT1_RESET_PIN)
|
||||||
|
|
||||||
|
#define CAT1_WAKEUP_PORT (PortA)
|
||||||
|
#define CAT1_WAKEUP_PIN (Pin02)
|
||||||
|
#define CAT1_WAKEUP_CLR() PORT_SetBits(CAT1_WAKEUP_PORT, CAT1_WAKEUP_PIN)
|
||||||
|
#define CAT1_WAKEUP_SET() PORT_ResetBits(CAT1_WAKEUP_PORT, CAT1_WAKEUP_PIN)
|
||||||
|
|
||||||
//RS485 Ch1
|
//RS485 Ch1
|
||||||
#define RS485_CH1_USART_CH (M4_USART2)
|
#define RS485_CH1_USART_CH (M4_USART2)
|
||||||
@@ -152,45 +178,22 @@
|
|||||||
//#define RS485_CH2_VOL_5V() PORT_SetBits(RS485_CH2_VOL_CTRL_PORT, RS485_CH2_VOL_CTRL_PIN)
|
//#define RS485_CH2_VOL_5V() PORT_SetBits(RS485_CH2_VOL_CTRL_PORT, RS485_CH2_VOL_CTRL_PIN)
|
||||||
//#define RS485_CH2_VOL_12V() PORT_ResetBits(RS485_CH2_VOL_CTRL_PORT, RS485_CH2_VOL_CTRL_PIN)
|
//#define RS485_CH2_VOL_12V() PORT_ResetBits(RS485_CH2_VOL_CTRL_PORT, RS485_CH2_VOL_CTRL_PIN)
|
||||||
|
|
||||||
//ETH OR CAT1
|
//ETH
|
||||||
#define ETH_OR_CAT1_USART_CH (M4_USART4)
|
#define ETH_USART_CH (M4_USART4)
|
||||||
#define ETH_OR_CAT1_USART_RX_PORT (PortB)
|
#define ETH_USART_RX_PORT (PortB)
|
||||||
#define ETH_OR_CAT1_USART_RX_PIN (Pin09)
|
#define ETH_USART_RX_PIN (Pin09)
|
||||||
#define ETH_OR_CAT1_USART_TX_PORT (PortC)
|
#define ETH_USART_TX_PORT (PortC)
|
||||||
#define ETH_OR_CAT1_USART_TX_PIN (Pin13)
|
#define ETH_USART_TX_PIN (Pin13)
|
||||||
#define ETH_OR_CAT1_USART_RX_FUNC (Func_Usart4_Rx)
|
#define ETH_USART_RX_FUNC (Func_Usart4_Rx)
|
||||||
#define ETH_OR_CAT1_USART_TX_FUNC (Func_Usart4_Tx)
|
#define ETH_USART_TX_FUNC (Func_Usart4_Tx)
|
||||||
#define ETH_OR_CAT1_USART_RI_NUM (INT_USART4_RI)
|
#define ETH_USART_RI_NUM (INT_USART4_RI)
|
||||||
#define ETH_OR_CAT1_USART_EI_NUM (INT_USART4_EI)
|
#define ETH_USART_EI_NUM (INT_USART4_EI)
|
||||||
#define ETH_OR_CAT1_USART_TI_NUM (INT_USART4_TI)
|
#define ETH_USART_TI_NUM (INT_USART4_TI)
|
||||||
#define ETH_OR_CAT1_USART_TCI_NUM (INT_USART4_TCI)
|
#define ETH_USART_TCI_NUM (INT_USART4_TCI)
|
||||||
#define ETH_OR_CAT1_FCG1_PERIPH (PWC_FCG1_PERIPH_USART4)
|
#define ETH_FCG1_PERIPH (PWC_FCG1_PERIPH_USART4)
|
||||||
|
|
||||||
#define ETH_OR_CAT1_CTRL_PORT (PortB)
|
#define ETH_ON() ETH_RESET_SET()
|
||||||
#define ETH_OR_CAT1_CTRL_PIN (Pin08)
|
#define ETH_OFF() ETH_RESET_CLR()
|
||||||
|
|
||||||
#if (HARDWARE_VERSION == 12)
|
|
||||||
#define ETH_ON() PORT_SetBits(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN)
|
|
||||||
#define CAT1_ON() PORT_ResetBits(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN)
|
|
||||||
#elif (HARDWARE_VERSION >= 13)
|
|
||||||
#define ETH_ON() PORT_ResetBits(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN)
|
|
||||||
#define CAT1_ON() PORT_SetBits(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//#define ETH_OR_CAT1_TX_CTRL_PORT (PortH)
|
|
||||||
//#define ETH_OR_CAT1_TX_CTRL_PIN (Pin02)
|
|
||||||
//#define ETH_ON() { PORT_SetBits(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN); PORT_SetBits(ETH_OR_CAT1_TX_CTRL_PORT, ETH_OR_CAT1_TX_CTRL_PIN); }
|
|
||||||
//#define CAT1_ON() { PORT_ResetBits(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN); PORT_ResetBits(ETH_OR_CAT1_TX_CTRL_PORT, ETH_OR_CAT1_TX_CTRL_PIN);}
|
|
||||||
|
|
||||||
#define CAT1_PWR_KEY_PORT (PortA)
|
|
||||||
#define CAT1_PWR_KEY_PIN (Pin03)
|
|
||||||
#define CAT1_PWR_KEY_CLR() PORT_SetBits(CAT1_PWR_KEY_PORT, CAT1_PWR_KEY_PIN)
|
|
||||||
#define CAT1_PWR_KEY_SET() PORT_ResetBits(CAT1_PWR_KEY_PORT, CAT1_PWR_KEY_PIN)
|
|
||||||
|
|
||||||
#define CAT1_RESET_PORT (PortA)
|
|
||||||
#define CAT1_RESET_PIN (Pin00)
|
|
||||||
#define CAT1_RESET_CLR() PORT_SetBits(CAT1_RESET_PORT, CAT1_RESET_PIN)
|
|
||||||
#define CAT1_RESET_SET() PORT_ResetBits(CAT1_RESET_PORT, CAT1_RESET_PIN)
|
|
||||||
|
|
||||||
#define ETH_RESET_PORT (PortB)
|
#define ETH_RESET_PORT (PortB)
|
||||||
#define ETH_RESET_PIN (Pin05)
|
#define ETH_RESET_PIN (Pin05)
|
||||||
@@ -377,9 +380,10 @@ typedef struct {
|
|||||||
|
|
||||||
void BSP_Init(void);
|
void BSP_Init(void);
|
||||||
|
|
||||||
void DbgUart_Config(uint32_t BaudRate);
|
void DbgOrCat1Uart_Config(uint32_t BaudRate);
|
||||||
void DebugUartSend(uint8_t *sData, uint16_t sLen);
|
void DebugOrCat1UartSend(uint8_t *sData, uint16_t sLen);
|
||||||
void DbgRxIrqCallback(uint8_t rData);
|
void DbgOrCat1RxIrqCallback(uint8_t rData);
|
||||||
|
void Cat1RxIrqCallback(uint8_t rData);
|
||||||
|
|
||||||
void RS485Ch1_Config(uint32_t BaudRate);
|
void RS485Ch1_Config(uint32_t BaudRate);
|
||||||
void RS485Ch1UartSend(uint8_t *sData, uint16_t sLen);
|
void RS485Ch1UartSend(uint8_t *sData, uint16_t sLen);
|
||||||
@@ -389,8 +393,9 @@ void RS485Ch2_Config(uint32_t BaudRate);
|
|||||||
void RS485Ch2UartSend(uint8_t *sData, uint16_t sLen);
|
void RS485Ch2UartSend(uint8_t *sData, uint16_t sLen);
|
||||||
void RS485Ch2RxIrqCallback(uint8_t rData);
|
void RS485Ch2RxIrqCallback(uint8_t rData);
|
||||||
|
|
||||||
void EthOrCat1UartSend(uint8_t *sData, uint16_t sLen);
|
void Eth_Config(uint32_t BaudRate);
|
||||||
void EthOrCat1RxIrqCallback(uint8_t rData);
|
void EthUartSend(uint8_t *sData, uint16_t sLen);
|
||||||
|
void EthIrqCallbackHandler(uint8_t rData);
|
||||||
|
|
||||||
void LoraTxRxIrqCallback(void);
|
void LoraTxRxIrqCallback(void);
|
||||||
|
|
||||||
|
|||||||
@@ -4,58 +4,32 @@
|
|||||||
|
|
||||||
static rt_sem_t CatOneRev_Sem = RT_NULL;
|
static rt_sem_t CatOneRev_Sem = RT_NULL;
|
||||||
static rt_sem_t CatOneIRQ_Sem = RT_NULL;
|
static rt_sem_t CatOneIRQ_Sem = RT_NULL;
|
||||||
static rt_sem_t EthIRQ_Sem = RT_NULL;
|
|
||||||
static rt_thread_t Cat1Rev_Thread = RT_NULL;
|
static rt_thread_t Cat1Rev_Thread = RT_NULL;
|
||||||
|
|
||||||
static uint8_t CAT1DispEn = false;
|
static uint8_t CAT1DispEn = false;
|
||||||
static CatOne_t CatOne;
|
static CatOne_t CatOne;
|
||||||
|
|
||||||
static char CatOneEthRxBuff[CAT_ONE_REV_LEN_MAX];
|
static char CatOneRxBuff[CAT_ONE_REV_LEN_MAX];
|
||||||
static uint16_t CatOneEthRxLen;
|
static uint16_t CatOneRxLen;
|
||||||
|
|
||||||
static uint8_t CatOneEthTxBuff[CAT_ONE_REV_LEN_MAX];
|
static uint8_t CatOneTxBuff[CAT_ONE_REV_LEN_MAX];
|
||||||
static uint16_t CatOneEthTxLen;
|
static uint16_t CatOneTxLen;
|
||||||
|
|
||||||
static uint8_t Payload[CAT_ONE_REV_LEN_MAX];
|
static uint8_t Payload[CAT_ONE_REV_LEN_MAX];
|
||||||
static char CommUnitSendASCII[CAT_ONE_REV_LEN_MAX * 2];
|
static char CommUnitSendASCII[CAT_ONE_REV_LEN_MAX * 2];
|
||||||
|
|
||||||
static uint8_t EthRevTimeOutCnt;
|
static uint8_t Cat1RevTimeOutCnt;
|
||||||
|
|
||||||
static uint16_t CatSendErrCnt = 0;
|
static uint16_t CatSendErrCnt = 0;
|
||||||
|
|
||||||
// ETH状态机相关变量已移至 CatOne_t 结构体中
|
|
||||||
|
|
||||||
#define CAT1_DBG_LOG(...) { if(CAT1DispEn) Debug_Printf(__VA_ARGS__);}
|
#define CAT1_DBG_LOG(...) { if(CAT1DispEn) Debug_Printf(__VA_ARGS__);}
|
||||||
//#define CAT1_DBG_ARRAY(ARRAY, SIZE) { if(CAT1DispEn) {DBG_ARRAY(ARRAY,SIZE)}}
|
|
||||||
|
|
||||||
#define CATONE_RESET_DELAY_TIME_MAX (5 * 60 * 1000)
|
#define CATONE_RESET_DELAY_TIME_MAX (5 * 60 * 1000)
|
||||||
|
|
||||||
//const char *CatOneATCmdStr[16] = {
|
|
||||||
// "NULL",
|
|
||||||
// "AT\r\n", //开机检测
|
|
||||||
// "ATE0\r\n", //关回显
|
|
||||||
// "AT+CPIN?\r\n", //识卡
|
|
||||||
//// "AT+CIMI\r\n", //IMEI
|
|
||||||
// "AT+CGSN=1\r\n",
|
|
||||||
// "AT+LCCID\r\n", //读卡号
|
|
||||||
// "AT+CEREG?\r\n", //查询注册状态
|
|
||||||
// "AT+CGPADDR=1\r\n", //查询IP地址
|
|
||||||
// "AT+CSQ\r\n", //查询信号强度
|
|
||||||
// "AT+LDNSGIP=gxjt.cui635.cn\r\n",
|
|
||||||
// "AT+LBS=0\r\n", //获取基站定位信息
|
|
||||||
// "AT+LIPOPEN=", //设置TCP服务器地址和端口,AT+LIPOPEN="TCP","114.55.52.96",6803
|
|
||||||
// "AT+LIPSEND=", //发送数据, AT+LIPSEND=0,1,20,"31313131313131323232323232"
|
|
||||||
// "AT+LIPCLOSE=0\r\n",//断开连接
|
|
||||||
// "AT+LBSPARA=http://locator-aep.xiot.senthink.com:80/locator/v0.1/locate,B84E427D95B1DF4A3F49B18DDF714C72\r\n",
|
|
||||||
// "AT+CCLK?\r\n", //获取时间
|
|
||||||
//};
|
|
||||||
|
|
||||||
const char *CatOneATCmdStr[16] = {
|
const char *CatOneATCmdStr[16] = {
|
||||||
"NULL",
|
"NULL",
|
||||||
"AT\r\n", //开机检测
|
"AT\r\n", //开机检测
|
||||||
"ATE0\r\n", //关回显
|
"ATE0\r\n", //关回显
|
||||||
"AT+CPIN?\r\n", //识卡
|
"AT+CPIN?\r\n", //识卡
|
||||||
// "AT+CIMI\r\n", //IMEI
|
|
||||||
"AT+CGSN=1\r\n",
|
"AT+CGSN=1\r\n",
|
||||||
"AT+QCCID\r\n", //读卡号
|
"AT+QCCID\r\n", //读卡号
|
||||||
"AT+CEREG?\r\n", //查询注册状态
|
"AT+CEREG?\r\n", //查询注册状态
|
||||||
@@ -63,9 +37,9 @@ const char *CatOneATCmdStr[16] = {
|
|||||||
"AT+CSQ\r\n", //查询信号强度
|
"AT+CSQ\r\n", //查询信号强度
|
||||||
"AT+LDNSGIP=gxjt.cui635.cn\r\n",
|
"AT+LDNSGIP=gxjt.cui635.cn\r\n",
|
||||||
"AT+QLBS\r\n", //获取基站定位信息
|
"AT+QLBS\r\n", //获取基站定位信息
|
||||||
"AT+QIOPEN=", //设置TCP服务器地址和端口,AT+LIPOPEN="TCP","114.55.52.96",6803
|
"AT+QIOPEN=", //设置TCP服务器地址和端口
|
||||||
"AT+QISEND=", //发送数据, AT+LIPSEND=0,1,20,"31313131313131323232323232"
|
"AT+QISEND=", //发送数据
|
||||||
"AT+QICLOSE=0\r\n",//断开连接
|
"AT+QICLOSE=0\r\n", //断开连接
|
||||||
"AT+QLBSCFG=\"server\",http://locator-aep.xiot.senthink.com:80/locator/v0.1/locate\r\n",
|
"AT+QLBSCFG=\"server\",http://locator-aep.xiot.senthink.com:80/locator/v0.1/locate\r\n",
|
||||||
"AT+QLBSCFG=\"token\",45B516D3078467E84DD2CFBF3532A4CB\r\n",
|
"AT+QLBSCFG=\"token\",45B516D3078467E84DD2CFBF3532A4CB\r\n",
|
||||||
"AT+CCLK?\r\n", //获取时间
|
"AT+CCLK?\r\n", //获取时间
|
||||||
@@ -84,50 +58,20 @@ const CatOneATCMD_m CatOneModeSetCmdArray[] = {
|
|||||||
CAT_ONE_AT_NULL,
|
CAT_ONE_AT_NULL,
|
||||||
CAT_ONE_AT,
|
CAT_ONE_AT,
|
||||||
CAT_ONE_ATE0,
|
CAT_ONE_ATE0,
|
||||||
//CAT_ONE_LBSPARA,
|
|
||||||
CAT_ONE_LCCID,
|
CAT_ONE_LCCID,
|
||||||
CAT_ONE_IMEI,
|
CAT_ONE_IMEI,
|
||||||
CAT_ONE_CPIN,
|
CAT_ONE_CPIN,
|
||||||
CAT_ONE_CEREG,
|
CAT_ONE_CEREG,
|
||||||
CAT_ONE_CSQ,
|
CAT_ONE_CSQ,
|
||||||
//CAT_ONE_LDNSGIP,
|
|
||||||
//CAT_ONE_LBS,
|
|
||||||
CAT_ONE_CCLK,
|
CAT_ONE_CCLK,
|
||||||
CAT_ONE_AT_CMD_END
|
CAT_ONE_AT_CMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
//CatOneRetStatus_m CatOneSend(uint8_t *sData, uint16_t sLen)
|
|
||||||
//{
|
|
||||||
// rt_err_t result;
|
|
||||||
//
|
|
||||||
// if(CatOne.Cat1Status != CAT_ONE_IDEL && CatOne.Cat1Status != CAT_ONE_WAIT_SEND)
|
|
||||||
// return CAT_ONE_RET_ERR;
|
|
||||||
//
|
|
||||||
// //CatOne.Cat1Status = CAT_ONE_RESET;
|
|
||||||
// result = rt_mq_send(CatOneRev_MQ, sData, sLen);
|
|
||||||
// if(result != RT_EOK) {
|
|
||||||
// CAT1_DBG_LOG("CatOne MQ Send ERR...\r\n");
|
|
||||||
// return CAT_ONE_RET_ERR;
|
|
||||||
// }
|
|
||||||
// CAT1_DBG_LOG("CatOne Send Message: \r\n", sData);
|
|
||||||
// return CAT_ONE_RET_OK;
|
|
||||||
//}
|
|
||||||
|
|
||||||
void CatOneStop(void)
|
void CatOneStop(void)
|
||||||
{
|
{
|
||||||
CatOne.Cat1Status = CAT_ONE_OFF;
|
CatOne.Cat1Status = CAT_ONE_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ETHStop(void)
|
|
||||||
{
|
|
||||||
CatOne.EthStatus = ETH_OFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ETHReset(void)
|
|
||||||
{
|
|
||||||
CatOne.EthStatus = ETH_RESET;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CatOneGetLocationInfo(int *Longitude, int *Latitude)
|
void CatOneGetLocationInfo(int *Longitude, int *Latitude)
|
||||||
{
|
{
|
||||||
if(CatOne.LBSFlag) {
|
if(CatOne.LBSFlag) {
|
||||||
@@ -146,7 +90,6 @@ void CatOneGetIMEIAndSIM(char *Imei, char *Sim)
|
|||||||
memcpy(Sim, CatOne.SIM, 20);
|
memcpy(Sim, CatOne.SIM, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
//返回true-busy, false-Idle
|
|
||||||
bool CatOneGetStatus(void)
|
bool CatOneGetStatus(void)
|
||||||
{
|
{
|
||||||
if(CatOne.Cat1Status == CAT_ONE_IDEL)
|
if(CatOne.Cat1Status == CAT_ONE_IDEL)
|
||||||
@@ -229,10 +172,6 @@ void CatOneAtCmdAnalyze(char *RxBuff)
|
|||||||
else {
|
else {
|
||||||
memset(CatOne.IMEI, 0, 15);
|
memset(CatOne.IMEI, 0, 15);
|
||||||
}
|
}
|
||||||
// ret = sscanf(p, "+CGSN: \"%s\"\r\n", CatOne.IMEI);
|
|
||||||
// if(ret != 1) {
|
|
||||||
// memset(CatOne.IMEI, 0, 15);
|
|
||||||
// }
|
|
||||||
CatOne.IMEI[15] = 0;
|
CatOne.IMEI[15] = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -354,8 +293,7 @@ void CatOneAtCmdAnalyze(char *RxBuff)
|
|||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
|
rt_sem_release(CatOneRev_Sem);
|
||||||
rt_sem_release(CatOneRev_Sem);//接收任务
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -377,8 +315,8 @@ void CatOneAtCmdSend(CatOneATCMD_m Cmd, uint32_t Dly, CatOneStatus_m NextStatus)
|
|||||||
{
|
{
|
||||||
CatOne.AtCmd = Cmd;
|
CatOne.AtCmd = Cmd;
|
||||||
if(CatOne.AtCmd == CAT_ONE_LIPSEND) {
|
if(CatOne.AtCmd == CAT_ONE_LIPSEND) {
|
||||||
HexToAscii(CatOneEthTxBuff, CommUnitSendASCII, CatOneEthTxLen);
|
HexToAscii(CatOneTxBuff, CommUnitSendASCII, CatOneTxLen);
|
||||||
sprintf(CatOne.CatOneSendBuff,"AT+LIPSEND=0,1,%d,\"%s\"\r\n",CatOneEthTxLen * 2, CommUnitSendASCII);
|
sprintf(CatOne.CatOneSendBuff,"AT+LIPSEND=0,1,%d,\"%s\"\r\n",CatOneTxLen * 2, CommUnitSendASCII);
|
||||||
CatOne.GateWay->BatteryReadDlyCnt = 30;
|
CatOne.GateWay->BatteryReadDlyCnt = 30;
|
||||||
}
|
}
|
||||||
else if(CatOne.AtCmd == CAT_ONE_LIPOPEN) {
|
else if(CatOne.AtCmd == CAT_ONE_LIPOPEN) {
|
||||||
@@ -393,14 +331,14 @@ void CatOneAtCmdSend(CatOneATCMD_m Cmd, uint32_t Dly, CatOneStatus_m NextStatus)
|
|||||||
strcpy(CatOne.CatOneSendBuff, CatOneATCmdStr[CatOne.AtCmd]);
|
strcpy(CatOne.CatOneSendBuff, CatOneATCmdStr[CatOne.AtCmd]);
|
||||||
}
|
}
|
||||||
CAT1_DBG_LOG(CatOne.CatOneSendBuff);
|
CAT1_DBG_LOG(CatOne.CatOneSendBuff);
|
||||||
EthRevTimeOutCnt = 0;
|
Cat1RevTimeOutCnt = 0;
|
||||||
EthOrCat1UartSend((uint8_t *)CatOne.CatOneSendBuff, strlen(CatOne.CatOneSendBuff));
|
DebugOrCat1UartSend((uint8_t *)CatOne.CatOneSendBuff, strlen(CatOne.CatOneSendBuff));
|
||||||
CatOne.CatOne1mSDelayCnt = Dly;
|
CatOne.CatOne1mSDelayCnt = Dly;
|
||||||
CatOne.Cat1Status = CAT_ONE_WAIT_REV;
|
CatOne.Cat1Status = CAT_ONE_WAIT_REV;
|
||||||
CatOne.NextStatus = NextStatus;
|
CatOne.NextStatus = NextStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GateWayRegister(uint8_t *TxBuff)
|
static int GateWayRegister(uint8_t *TxBuff)
|
||||||
{
|
{
|
||||||
uint16_t UnitCommCnt = 0;
|
uint16_t UnitCommCnt = 0;
|
||||||
uint8_t *p = &TxBuff[0];
|
uint8_t *p = &TxBuff[0];
|
||||||
@@ -459,7 +397,7 @@ void CatOneLoopHandler(void)
|
|||||||
CatOneAtCmdSend(CatOne.AtCmd, 2000, CatOne.NextStatus);
|
CatOneAtCmdSend(CatOne.AtCmd, 2000, CatOne.NextStatus);
|
||||||
CAT1_DBG_LOG("Cat1 Ret TimeOut, ReSend(%d)...\r\n", CatOne.AtCmdResendCnt);
|
CAT1_DBG_LOG("Cat1 Ret TimeOut, ReSend(%d)...\r\n", CatOne.AtCmdResendCnt);
|
||||||
}
|
}
|
||||||
else { //3次错误,关机
|
else {
|
||||||
CAT1_DBG_LOG("Cat1 error, Close!\r\n");
|
CAT1_DBG_LOG("Cat1 error, Close!\r\n");
|
||||||
if(CatOne.AtCmd == CAT_ONE_LIPSEND)
|
if(CatOne.AtCmd == CAT_ONE_LIPSEND)
|
||||||
CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
|
CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
|
||||||
@@ -499,9 +437,9 @@ void CatOneLoopHandler(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAT_ONE_REG_SVR: //注册服务器
|
case CAT_ONE_REG_SVR:
|
||||||
ret = GateWayRegister(CatOneEthTxBuff);
|
ret = GateWayRegister(CatOneTxBuff);
|
||||||
rt_mq_send(CatOne.GateWay->NetSendData_MQ, CatOneEthTxBuff, ret);
|
rt_mq_send(CatOne.GateWay->NetSendData_MQ, CatOneTxBuff, ret);
|
||||||
CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
|
CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -509,11 +447,11 @@ void CatOneLoopHandler(void)
|
|||||||
result = rt_mq_recv(CatOne.GateWay->NetSendData_MQ, Payload, CAT_ONE_REV_LEN_MAX, 1000);
|
result = rt_mq_recv(CatOne.GateWay->NetSendData_MQ, Payload, CAT_ONE_REV_LEN_MAX, 1000);
|
||||||
if(result == RT_EOK) {
|
if(result == RT_EOK) {
|
||||||
CatSendErrCnt = 0;
|
CatSendErrCnt = 0;
|
||||||
CatOneEthTxLen = NetCommOrgData(CatOne.GateWay, Payload, CatOneEthTxBuff);
|
CatOneTxLen = NetCommOrgData(CatOne.GateWay, Payload, CatOneTxBuff);
|
||||||
CatOne.Cat1Status = CAT_ONE_SEND_DATA;
|
CatOne.Cat1Status = CAT_ONE_SEND_DATA;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(CatOne.Cat1Status == CAT_ONE_RESET || CatOne.Cat1Status == CAT_ONE_OFF) //外部命令执行,状态改变
|
if(CatOne.Cat1Status == CAT_ONE_RESET || CatOne.Cat1Status == CAT_ONE_OFF)
|
||||||
return;
|
return;
|
||||||
if(!CatOne.TcpConnFlag) {
|
if(!CatOne.TcpConnFlag) {
|
||||||
CatOne.Cat1Status = CAT_ONE_OFF;
|
CatOne.Cat1Status = CAT_ONE_OFF;
|
||||||
@@ -554,7 +492,7 @@ void CatOneLoopHandler(void)
|
|||||||
else {
|
else {
|
||||||
Cat1RevErrCnt = 0;
|
Cat1RevErrCnt = 0;
|
||||||
}
|
}
|
||||||
if(CatOne.GateWay->SvrRegFlag == false) //设备没注册,关闭4G,等待下一次重新注册
|
if(CatOne.GateWay->SvrRegFlag == false)
|
||||||
CatOne.Cat1Status = CAT_ONE_OFF;
|
CatOne.Cat1Status = CAT_ONE_OFF;
|
||||||
else
|
else
|
||||||
CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
|
CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
|
||||||
@@ -566,7 +504,6 @@ void CatOneLoopHandler(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CAT_ONE_OFF:
|
case CAT_ONE_OFF:
|
||||||
//CAT1_POW_OFF();
|
|
||||||
CAT1_RESET_SET();
|
CAT1_RESET_SET();
|
||||||
CAT1_PWR_KEY_CLR();
|
CAT1_PWR_KEY_CLR();
|
||||||
rt_thread_delay(3000);
|
rt_thread_delay(3000);
|
||||||
@@ -576,15 +513,16 @@ void CatOneLoopHandler(void)
|
|||||||
CAT1_DBG_LOG("Cat1 Power Off!\r\n");
|
CAT1_DBG_LOG("Cat1 Power Off!\r\n");
|
||||||
CatOne.Cat1Status = CAT_ONE_IDEL;
|
CatOne.Cat1Status = CAT_ONE_IDEL;
|
||||||
CatOne.ResetDelayCnt = CATONE_RESET_DELAY_TIME_MAX;
|
CatOne.ResetDelayCnt = CATONE_RESET_DELAY_TIME_MAX;
|
||||||
|
DBG_ON();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAT_ONE_RESET:
|
case CAT_ONE_RESET:
|
||||||
CatSendErrCnt = 0;
|
CatSendErrCnt = 0;
|
||||||
CatOne.GateWay->SvrRegFlag = false;
|
CatOne.GateWay->SvrRegFlag = false;
|
||||||
CAT1_DBG_LOG("Cat1 Reset!\r\n");
|
CAT1_DBG_LOG("Cat1 Reset!\r\n");
|
||||||
|
CAT1_ON();
|
||||||
CAT1_RESET_CLR();
|
CAT1_RESET_CLR();
|
||||||
CAT1_PWR_KEY_SET();
|
CAT1_PWR_KEY_SET();
|
||||||
//CAT1_POW_ON();
|
|
||||||
rt_thread_delay(50);
|
rt_thread_delay(50);
|
||||||
CAT1_RESET_SET();
|
CAT1_RESET_SET();
|
||||||
CAT1_PWR_KEY_CLR();
|
CAT1_PWR_KEY_CLR();
|
||||||
@@ -598,156 +536,6 @@ void CatOneLoopHandler(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EthLoopHandler(void)
|
|
||||||
{
|
|
||||||
rt_err_t result;
|
|
||||||
|
|
||||||
switch(CatOne.EthStatus) {
|
|
||||||
case ETH_IDEL:
|
|
||||||
rt_thread_delay(1);
|
|
||||||
if(CatOne.EthResetDelayCnt > 0) {
|
|
||||||
CatOne.EthResetDelayCnt--;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
CatOne.EthStatus = ETH_RESET;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_RESET:
|
|
||||||
CAT1_DBG_LOG("ETH Reset!\r\n");
|
|
||||||
ETH_RESET_CLR();
|
|
||||||
rt_thread_delay(10);
|
|
||||||
ETH_RESET_SET();
|
|
||||||
rt_thread_delay(2000); // 延长复位后稳定时间到2秒
|
|
||||||
CatOne.EthStatus = ETH_WAIT_LINK;
|
|
||||||
CatOne.EthLinkWaitCnt = 0;
|
|
||||||
CatOne.EthFirstRegFlag = true; // 重置首次注册标志
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_WAIT_LINK:
|
|
||||||
if(CatOne.EthLinkWaitCnt == 0) {
|
|
||||||
/* 首次进入等待链路状态,等待模块完全启动 */
|
|
||||||
CAT1_DBG_LOG("ETH Waiting for module ready...\r\n");
|
|
||||||
rt_thread_delay(2000);
|
|
||||||
}
|
|
||||||
if(ETH_LINK_GET() == Reset) {
|
|
||||||
CAT1_DBG_LOG("ETH Link OK!\r\n");
|
|
||||||
if(CatOne.GateWay->SvrRegFlag == false) {
|
|
||||||
CatOne.EthStatus = ETH_REG_SVR;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
CatOne.EthStatus = ETH_WAIT_SEND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
CatOne.EthLinkWaitCnt++;
|
|
||||||
if(CatOne.EthLinkWaitCnt >= ETH_LINK_WAIT_TIME_MAX) {
|
|
||||||
CAT1_DBG_LOG("ETH Link Timeout, Reset!\r\n");
|
|
||||||
CatOne.EthStatus = ETH_OFF;
|
|
||||||
}
|
|
||||||
rt_thread_delay(1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_REG_SVR:
|
|
||||||
{
|
|
||||||
// 首次注册时添加延迟,等待系统稳定
|
|
||||||
if(CatOne.EthFirstRegFlag) {
|
|
||||||
CAT1_DBG_LOG("ETH First Register, waiting for system stable...\r\n");
|
|
||||||
rt_thread_delay(ETH_FIRST_REG_DELAY);
|
|
||||||
CatOne.EthFirstRegFlag = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t ret = GateWayRegister(CatOneEthTxBuff);
|
|
||||||
rt_mq_send(CatOne.GateWay->NetSendData_MQ, CatOneEthTxBuff, ret);
|
|
||||||
CAT1_DBG_LOG("ETH Register Server...\r\n");
|
|
||||||
CatOne.EthStatus = ETH_WAIT_SEND;
|
|
||||||
CatOne.EthSendRetryCnt = 0; // 重置重试计数器
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_WAIT_SEND:
|
|
||||||
result = rt_mq_recv(CatOne.GateWay->NetSendData_MQ, Payload, CAT_ONE_REV_LEN_MAX, 100);
|
|
||||||
if(result == RT_EOK) {
|
|
||||||
CatOneEthTxLen = NetCommOrgData(CatOne.GateWay, Payload, CatOneEthTxBuff);
|
|
||||||
CatOne.EthStatus = ETH_SEND_DATA;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(CatOne.EthStatus == ETH_RESET || CatOne.EthStatus == ETH_OFF)
|
|
||||||
return;
|
|
||||||
if(ETH_LINK_GET() != Reset) {
|
|
||||||
CAT1_DBG_LOG("ETH Link Lost!\r\n");
|
|
||||||
CatOne.EthStatus = ETH_OFF;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
rt_thread_delay(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_SEND_DATA:
|
|
||||||
HexToAscii(CatOneEthTxBuff, CommUnitSendASCII, CatOneEthTxLen);
|
|
||||||
EthRevTimeOutCnt = 0;
|
|
||||||
EthOrCat1UartSend((uint8_t *)CommUnitSendASCII, CatOneEthTxLen * 2);
|
|
||||||
CommUnitSendASCII[CatOneEthTxLen * 2] = 0;
|
|
||||||
CAT1_DBG_LOG("Eth Send: %s\r\n", CommUnitSendASCII);
|
|
||||||
|
|
||||||
CatOne.EthStatus = ETH_WAIT_RECV;
|
|
||||||
CatOne.EthRecvTimeoutCnt = 0;
|
|
||||||
CatOne.EthSendRetryCnt = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_WAIT_RECV:
|
|
||||||
rt_thread_delay(1);
|
|
||||||
CatOne.EthRecvTimeoutCnt++;
|
|
||||||
|
|
||||||
if(CatOne.EthRecvTimeoutCnt >= ETH_RECV_TIMEOUT_MAX) {
|
|
||||||
CAT1_DBG_LOG("ETH Recv Timeout!\r\n");
|
|
||||||
CatOne.EthSendRetryCnt++;
|
|
||||||
if(CatOne.EthSendRetryCnt >= ETH_SEND_RETRY_MAX) {
|
|
||||||
CAT1_DBG_LOG("ETH Send Retry Max, Reset!\r\n");
|
|
||||||
CatOne.EthStatus = ETH_OFF;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(CatOne.GateWay->SvrRegFlag == false) {
|
|
||||||
CatOne.EthStatus = ETH_REG_SVR;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
CatOne.EthStatus = ETH_WAIT_SEND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ETH_LINK_GET() != Reset) {
|
|
||||||
CAT1_DBG_LOG("ETH Link Lost During Wait!\r\n");
|
|
||||||
CatOne.EthStatus = ETH_OFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(CatOne.GateWay->SvrRegFlag == true) {
|
|
||||||
CAT1_DBG_LOG("ETH Register Success!\r\n");
|
|
||||||
CatOne.EthStatus = ETH_WAIT_SEND;
|
|
||||||
CatOne.EthRecvTimeoutCnt = 0;
|
|
||||||
CatOne.EthSendRetryCnt = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ETH_OFF:
|
|
||||||
CAT1_DBG_LOG("ETH Power Off!\r\n");
|
|
||||||
CatOne.GateWay->SvrRegFlag = false;
|
|
||||||
//ETH_RESET_CLR();
|
|
||||||
//rt_thread_delay(3000);
|
|
||||||
//ETH_RESET_SET();
|
|
||||||
CatOne.EthStatus = ETH_IDEL;
|
|
||||||
CatOne.EthResetDelayCnt = ETH_RESET_DELAY_TIME_MAX;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
CatOne.EthStatus = ETH_RESET;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen)
|
bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen)
|
||||||
{
|
{
|
||||||
if(CatOne.GateWay->SvrRegFlag == false)
|
if(CatOne.GateWay->SvrRegFlag == false)
|
||||||
@@ -764,70 +552,44 @@ static void CatOneInit(GateWayPara GateWay)
|
|||||||
CatOne.CatOneRevCallBack = GateWay->SvrRevCallBack;
|
CatOne.CatOneRevCallBack = GateWay->SvrRevCallBack;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CatOneEthRev_Thread_Entry(void *parameter)
|
void CatOneRev_Thread_Entry(void *parameter)
|
||||||
{
|
{
|
||||||
rt_err_t result;
|
rt_err_t result;
|
||||||
char RxBuffTemp[CAT_ONE_REV_LEN_MAX];
|
char RxBuffTemp[CAT_ONE_REV_LEN_MAX];
|
||||||
uint8_t HexData[CAT_ONE_REV_LEN_MAX / 2];
|
|
||||||
|
|
||||||
GateWayPara GateWay = (GateWayPara)parameter;
|
GateWayPara GateWay = (GateWayPara)parameter;
|
||||||
|
|
||||||
rt_kprintf("CatOneTthRev Thread is running!\r\n");
|
rt_kprintf("CatOneRev Thread is running!\r\n");
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
if(GateWay->ConfigPara.Comm == CATONE_COMM) {
|
|
||||||
result = rt_sem_take(CatOneIRQ_Sem, 500);
|
result = rt_sem_take(CatOneIRQ_Sem, 500);
|
||||||
if(result == RT_EOK) {
|
if(result == RT_EOK) {
|
||||||
memcpy(RxBuffTemp, CatOneEthRxBuff, CatOneEthRxLen);
|
memcpy(RxBuffTemp, CatOneRxBuff, CatOneRxLen);
|
||||||
RxBuffTemp[CatOneEthRxLen] = 0;
|
RxBuffTemp[CatOneRxLen] = 0;
|
||||||
CatOneAtCmdAnalyze(RxBuffTemp);
|
CatOneAtCmdAnalyze(RxBuffTemp);
|
||||||
memset(CatOneEthRxBuff, 0x00, CAT_ONE_REV_LEN_MAX);
|
memset(CatOneRxBuff, 0x00, CAT_ONE_REV_LEN_MAX);
|
||||||
CatOneEthRxLen = 0;
|
CatOneRxLen = 0;
|
||||||
}
|
|
||||||
//CatOneEthRxLen = 0;
|
|
||||||
}
|
|
||||||
else if(GateWay->ConfigPara.Comm == ETH_COMM) {
|
|
||||||
result = rt_sem_take(EthIRQ_Sem, 500);
|
|
||||||
if(result == RT_EOK) {
|
|
||||||
memcpy(RxBuffTemp, CatOneEthRxBuff, CatOneEthRxLen);
|
|
||||||
RxBuffTemp[CatOneEthRxLen] = 0;
|
|
||||||
CAT1_DBG_LOG("Eth Rev: %s\r\n",RxBuffTemp);
|
|
||||||
memset(HexData, 0x00, CatOneEthRxLen / 2);
|
|
||||||
uint8_t ret = AsciiToHex(RxBuffTemp, HexData, CatOneEthRxLen);
|
|
||||||
if(ret > 0)
|
|
||||||
GateWay->SvrRevCallBack(GateWay, HexData, ret);
|
|
||||||
memset(CatOneEthRxBuff, 0x00, CAT_ONE_REV_LEN_MAX);
|
|
||||||
CatOneEthRxLen = 0;
|
|
||||||
}
|
|
||||||
//CatOneEthRxLen = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CatOne_Eth_Thread_Entry(void *parameter)
|
void CatOne_Thread_Entry(void *parameter)
|
||||||
{
|
{
|
||||||
GateWayPara GateWay = (GateWayPara)parameter;
|
GateWayPara GateWay = (GateWayPara)parameter;
|
||||||
|
|
||||||
CatOneRev_Sem = rt_sem_create("cat1r_sem", 0, RT_IPC_FLAG_FIFO);
|
CatOneRev_Sem = rt_sem_create("cat1r_sem", 0, RT_IPC_FLAG_FIFO);
|
||||||
if(CatOneRev_Sem == RT_NULL) {
|
if(CatOneRev_Sem == RT_NULL) {
|
||||||
rt_kprintf("CatOne Sem Create Failed!\r\n");
|
rt_kprintf("CatOneRev Sem Create Failed!\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
EthIRQ_Sem = rt_sem_create("eth_sem", 0, RT_IPC_FLAG_FIFO);
|
CatOneIRQ_Sem = rt_sem_create("cat1i_sem", 0, RT_IPC_FLAG_FIFO);
|
||||||
if(EthIRQ_Sem == RT_NULL) {
|
|
||||||
rt_kprintf("Eth Sem Create Failed!\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
CatOneIRQ_Sem = rt_sem_create("cat1_sem", 0, RT_IPC_FLAG_FIFO);
|
|
||||||
if(CatOneIRQ_Sem == RT_NULL) {
|
if(CatOneIRQ_Sem == RT_NULL) {
|
||||||
rt_kprintf("CatOneIRQ Sem Create Failed!\r\n");
|
rt_kprintf("CatOneIRQ Sem Create Failed!\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
CatOneInit(GateWay);
|
CatOneInit(GateWay);
|
||||||
ETH_RESET_CLR();
|
|
||||||
rt_thread_delay(10);
|
Cat1Rev_Thread = rt_thread_create("Cat1Rev", CatOneRev_Thread_Entry, parameter, 3000, 3, 20);
|
||||||
ETH_RESET_SET();
|
|
||||||
Cat1Rev_Thread = rt_thread_create("Cat1Rev", CatOneEthRev_Thread_Entry, parameter, 3000, 3, 20);
|
|
||||||
if (Cat1Rev_Thread != RT_NULL) {
|
if (Cat1Rev_Thread != RT_NULL) {
|
||||||
rt_thread_startup(Cat1Rev_Thread);
|
rt_thread_startup(Cat1Rev_Thread);
|
||||||
}
|
}
|
||||||
@@ -835,44 +597,37 @@ void CatOne_Eth_Thread_Entry(void *parameter)
|
|||||||
rt_kprintf("CatOneRev Thread Create Failed! Exit...\r\n");
|
rt_kprintf("CatOneRev Thread Create Failed! Exit...\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rt_kprintf("CatOne Thread is running!\r\n");
|
rt_kprintf("CatOne Thread is running!\r\n");
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
//rt_mutex_take(GateWay->UartRevMutex, RT_WAITING_FOREVER);
|
if(GateWay->ConfigPara.Comm != CATONE_COMM) {
|
||||||
if(GateWay->ConfigPara.Comm == CATONE_COMM)
|
rt_thread_delay(100);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
CatOneLoopHandler();
|
CatOneLoopHandler();
|
||||||
else if(GateWay->ConfigPara.Comm == ETH_COMM)
|
|
||||||
EthLoopHandler();
|
|
||||||
else
|
|
||||||
rt_thread_delay(1);
|
|
||||||
//rt_mutex_release(GateWay->UartRevMutex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Cat1IrqCallback(uint8_t rData)
|
||||||
void EthOrCat1RxIrqCallback(uint8_t rData)
|
|
||||||
{
|
{
|
||||||
if(EthRevTimeOutCnt == 0)
|
if(Cat1RevTimeOutCnt == 0)
|
||||||
CatOneEthRxLen = 0;
|
CatOneRxLen = 0;
|
||||||
|
|
||||||
if(CatOneEthRxLen < CAT_ONE_REV_LEN_MAX) {
|
if(CatOneRxLen < CAT_ONE_REV_LEN_MAX) {
|
||||||
CatOneEthRxBuff[CatOneEthRxLen++] = rData;
|
CatOneRxBuff[CatOneRxLen++] = rData;
|
||||||
}
|
}
|
||||||
|
|
||||||
EthRevTimeOutCnt = 3;
|
Cat1RevTimeOutCnt = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EthRxOverhandler(void)
|
void Cat1OverHandler(void)
|
||||||
{
|
{
|
||||||
if(EthRevTimeOutCnt > 0)
|
if(Cat1RevTimeOutCnt > 0)
|
||||||
EthRevTimeOutCnt--;
|
Cat1RevTimeOutCnt--;
|
||||||
|
|
||||||
if(CatOneEthRxLen > 5 && EthRevTimeOutCnt == 0) {
|
if(CatOneRxLen > 5 && Cat1RevTimeOutCnt == 0) {
|
||||||
EthRevTimeOutCnt = 20;
|
Cat1RevTimeOutCnt = 20;
|
||||||
if(CatOne.GateWay->ConfigPara.Comm == CATONE_COMM)
|
|
||||||
rt_sem_release(CatOneIRQ_Sem);
|
rt_sem_release(CatOneIRQ_Sem);
|
||||||
else
|
|
||||||
rt_sem_release(EthIRQ_Sem);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -890,12 +645,7 @@ void CatReadImeiOrSim(char *Imei, char *Sim)
|
|||||||
|
|
||||||
void CatOneTriggerRegister(void)
|
void CatOneTriggerRegister(void)
|
||||||
{
|
{
|
||||||
ETHStop();
|
CatOneStop();
|
||||||
CAT1_ON();
|
CAT1_ON();
|
||||||
CatOneReset();
|
CatOneReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ETHTriggerRegister(void)
|
|
||||||
{
|
|
||||||
CatOne.EthStatus = ETH_REG_SVR;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,311 @@
|
|||||||
|
#include "EthTask.h"
|
||||||
|
#include "Public.h"
|
||||||
|
#include "DebugCmd.h"
|
||||||
|
|
||||||
|
static rt_sem_t EthIRQ_Sem = RT_NULL;
|
||||||
|
static rt_thread_t EthRev_Thread = RT_NULL;
|
||||||
|
|
||||||
|
static EthTask_t Eth;
|
||||||
|
|
||||||
|
static char EthRxBuff[ETH_RX_LEN_MAX];
|
||||||
|
static uint16_t EthRxLen;
|
||||||
|
static uint8_t EthRevTimeOutCnt;
|
||||||
|
|
||||||
|
static uint8_t Payload[ETH_RX_LEN_MAX];
|
||||||
|
static char CommUnitSendASCII[ETH_RX_LEN_MAX * 2];
|
||||||
|
|
||||||
|
static bool EthDispEn = false;
|
||||||
|
|
||||||
|
#define ETH_DBG_LOG(...) { if(EthDispEn) Debug_Printf(__VA_ARGS__);}
|
||||||
|
|
||||||
|
void ETHOnOff(bool OnOff)
|
||||||
|
{
|
||||||
|
EthDispEn = OnOff;
|
||||||
|
if(OnOff)
|
||||||
|
Debug_Printf("\r\nEth Display Enable!\r\n\r\n");
|
||||||
|
else
|
||||||
|
Debug_Printf("\r\nEth Display Disable!\r\n\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ETHStop(void)
|
||||||
|
{
|
||||||
|
Eth.Status = ETH_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ETHReset(void)
|
||||||
|
{
|
||||||
|
Eth.Status = ETH_RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ETHTriggerRegister(void)
|
||||||
|
{
|
||||||
|
Eth.Status = ETH_REG_SVR;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GateWayRegister(uint8_t *TxBuff)
|
||||||
|
{
|
||||||
|
uint16_t UnitCommCnt = 0;
|
||||||
|
uint8_t *p = &TxBuff[0];
|
||||||
|
uint16_t len = 5;
|
||||||
|
|
||||||
|
if(Eth.GateWay->ConfigPara.Rs485Ch1.CommUnitEnable == true && Eth.GateWay->ConfigPara.Rs485Ch1.Enable == true) {
|
||||||
|
UnitCommCnt++;
|
||||||
|
memcpy(&p[len], Eth.GateWay->ConfigPara.Rs485Ch1.CUPara.Para.Mac[0], 6);
|
||||||
|
len += 6;
|
||||||
|
}
|
||||||
|
if(Eth.GateWay->ConfigPara.Rs485Ch2.CommUnitEnable == true && Eth.GateWay->ConfigPara.Rs485Ch2.Enable == true) {
|
||||||
|
UnitCommCnt++;
|
||||||
|
memcpy(&p[len], Eth.GateWay->ConfigPara.Rs485Ch2.CUPara.Para.Mac[0], 6);
|
||||||
|
len += 6;
|
||||||
|
}
|
||||||
|
for(int i = 0; i < COMMUNIT_NUM_MAX; i++) {
|
||||||
|
if(Eth.GateWay->ConfigPara.CommUnitArray[i].RegFlag == true) {
|
||||||
|
for(int j = 0; j < Eth.GateWay->ConfigPara.CommUnitArray[i].SensorN; j++)
|
||||||
|
{
|
||||||
|
memcpy(&p[len], Eth.GateWay->ConfigPara.CommUnitArray[i].Mac[j], 6);
|
||||||
|
len += 6;
|
||||||
|
UnitCommCnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TxBuff[0] = (len - 3) & 0x00ff;
|
||||||
|
TxBuff[1] = ((len - 3) >> 8) & 0x00ff;
|
||||||
|
TxBuff[2] = NET_COMM_CMD_REG;
|
||||||
|
TxBuff[3] = UnitCommCnt & 0x00ff;
|
||||||
|
TxBuff[4] = (UnitCommCnt >> 8) & 0x00ff;
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EthLoopHandler(void)
|
||||||
|
{
|
||||||
|
rt_err_t result;
|
||||||
|
|
||||||
|
switch(Eth.Status) {
|
||||||
|
case ETH_IDEL:
|
||||||
|
rt_thread_delay(1);
|
||||||
|
if(Eth.ResetDelayCnt > 0) {
|
||||||
|
Eth.ResetDelayCnt--;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Eth.Status = ETH_RESET;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_RESET:
|
||||||
|
ETH_DBG_LOG("ETH Reset!\r\n");
|
||||||
|
ETH_RESET_CLR();
|
||||||
|
rt_thread_delay(10);
|
||||||
|
ETH_RESET_SET();
|
||||||
|
rt_thread_delay(2000);
|
||||||
|
Eth.Status = ETH_WAIT_LINK;
|
||||||
|
Eth.LinkWaitCnt = 0;
|
||||||
|
Eth.FirstRegFlag = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_WAIT_LINK:
|
||||||
|
if(Eth.LinkWaitCnt == 0) {
|
||||||
|
ETH_DBG_LOG("ETH Waiting for module ready...\r\n");
|
||||||
|
rt_thread_delay(2000);
|
||||||
|
}
|
||||||
|
if(ETH_LINK_GET() == Reset) {
|
||||||
|
ETH_DBG_LOG("ETH Link OK!\r\n");
|
||||||
|
if(Eth.GateWay->SvrRegFlag == false) {
|
||||||
|
Eth.Status = ETH_REG_SVR;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Eth.Status = ETH_WAIT_SEND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Eth.LinkWaitCnt++;
|
||||||
|
if(Eth.LinkWaitCnt >= ETH_LINK_WAIT_TIME_MAX) {
|
||||||
|
ETH_DBG_LOG("ETH Link Timeout, Reset!\r\n");
|
||||||
|
Eth.Status = ETH_OFF;
|
||||||
|
}
|
||||||
|
rt_thread_delay(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_REG_SVR:
|
||||||
|
{
|
||||||
|
if(Eth.FirstRegFlag) {
|
||||||
|
ETH_DBG_LOG("ETH First Register, waiting for system stable...\r\n");
|
||||||
|
rt_thread_delay(ETH_FIRST_REG_DELAY);
|
||||||
|
Eth.FirstRegFlag = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ret = GateWayRegister(Eth.TxBuff);
|
||||||
|
rt_mq_send(Eth.GateWay->NetSendData_MQ, Eth.TxBuff, ret);
|
||||||
|
ETH_DBG_LOG("ETH Register Server...\r\n");
|
||||||
|
Eth.Status = ETH_WAIT_SEND;
|
||||||
|
Eth.SendRetryCnt = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_WAIT_SEND:
|
||||||
|
result = rt_mq_recv(Eth.GateWay->NetSendData_MQ, Payload, ETH_RX_LEN_MAX, 100);
|
||||||
|
if(result == RT_EOK) {
|
||||||
|
Eth.TxLen = NetCommOrgData(Eth.GateWay, Payload, Eth.TxBuff);
|
||||||
|
Eth.Status = ETH_SEND_DATA;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(Eth.Status == ETH_RESET || Eth.Status == ETH_OFF)
|
||||||
|
return;
|
||||||
|
if(ETH_LINK_GET() != Reset) {
|
||||||
|
ETH_DBG_LOG("ETH Link Lost!\r\n");
|
||||||
|
Eth.Status = ETH_OFF;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rt_thread_delay(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_SEND_DATA:
|
||||||
|
HexToAscii(Eth.TxBuff, CommUnitSendASCII, Eth.TxLen);
|
||||||
|
EthRevTimeOutCnt = 0;
|
||||||
|
EthUartSend((uint8_t *)CommUnitSendASCII, Eth.TxLen * 2);
|
||||||
|
CommUnitSendASCII[Eth.TxLen * 2] = 0;
|
||||||
|
ETH_DBG_LOG("Eth Send: %s\r\n", CommUnitSendASCII);
|
||||||
|
|
||||||
|
Eth.Status = ETH_WAIT_RECV;
|
||||||
|
Eth.RecvTimeoutCnt = 0;
|
||||||
|
Eth.SendRetryCnt = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_WAIT_RECV:
|
||||||
|
rt_thread_delay(1);
|
||||||
|
Eth.RecvTimeoutCnt++;
|
||||||
|
|
||||||
|
if(Eth.RecvTimeoutCnt >= ETH_RECV_TIMEOUT_MAX) {
|
||||||
|
ETH_DBG_LOG("ETH Recv Timeout!\r\n");
|
||||||
|
Eth.SendRetryCnt++;
|
||||||
|
if(Eth.SendRetryCnt >= ETH_SEND_RETRY_MAX) {
|
||||||
|
ETH_DBG_LOG("ETH Send Retry Max, Reset!\r\n");
|
||||||
|
Eth.Status = ETH_OFF;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(Eth.GateWay->SvrRegFlag == false) {
|
||||||
|
Eth.Status = ETH_REG_SVR;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Eth.Status = ETH_WAIT_SEND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ETH_LINK_GET() != Reset) {
|
||||||
|
ETH_DBG_LOG("ETH Link Lost During Wait!\r\n");
|
||||||
|
Eth.Status = ETH_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Eth.GateWay->SvrRegFlag == true) {
|
||||||
|
ETH_DBG_LOG("ETH Register Success!\r\n");
|
||||||
|
Eth.Status = ETH_WAIT_SEND;
|
||||||
|
Eth.RecvTimeoutCnt = 0;
|
||||||
|
Eth.SendRetryCnt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ETH_OFF:
|
||||||
|
ETH_DBG_LOG("ETH Power Off!\r\n");
|
||||||
|
Eth.GateWay->SvrRegFlag = false;
|
||||||
|
Eth.Status = ETH_IDEL;
|
||||||
|
Eth.ResetDelayCnt = ETH_RESET_DELAY_TIME_MAX;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Eth.Status = ETH_RESET;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void EthInit(GateWayPara GateWay)
|
||||||
|
{
|
||||||
|
memset(&Eth, 0x00, sizeof(EthTask_t));
|
||||||
|
Eth.Status = ETH_RESET;
|
||||||
|
Eth.GateWay = GateWay;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EthIrqCallbackHandler(uint8_t rData)
|
||||||
|
{
|
||||||
|
if(EthRevTimeOutCnt == 0)
|
||||||
|
EthRxLen = 0;
|
||||||
|
|
||||||
|
if(EthRxLen < ETH_RX_LEN_MAX) {
|
||||||
|
EthRxBuff[EthRxLen++] = rData;
|
||||||
|
}
|
||||||
|
|
||||||
|
EthRevTimeOutCnt = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EthOverHandler(void)
|
||||||
|
{
|
||||||
|
if(EthRevTimeOutCnt > 0)
|
||||||
|
EthRevTimeOutCnt--;
|
||||||
|
|
||||||
|
if(EthRxLen > 5 && EthRevTimeOutCnt == 0) {
|
||||||
|
EthRevTimeOutCnt = 20;
|
||||||
|
rt_sem_release(EthIRQ_Sem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void EthRev_Thread_Entry(void *parameter)
|
||||||
|
{
|
||||||
|
rt_err_t result;
|
||||||
|
char RxBuffTemp[ETH_RX_LEN_MAX];
|
||||||
|
uint8_t HexData[ETH_RX_LEN_MAX / 2];
|
||||||
|
|
||||||
|
GateWayPara GateWay = (GateWayPara)parameter;
|
||||||
|
|
||||||
|
rt_kprintf("EthRev Thread is running!\r\n");
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
result = rt_sem_take(EthIRQ_Sem, 500);
|
||||||
|
if(result == RT_EOK) {
|
||||||
|
memcpy(RxBuffTemp, EthRxBuff, EthRxLen);
|
||||||
|
RxBuffTemp[EthRxLen] = 0;
|
||||||
|
ETH_DBG_LOG("Eth Rev: %s\r\n", RxBuffTemp);
|
||||||
|
memset(HexData, 0x00, EthRxLen / 2);
|
||||||
|
uint8_t ret = AsciiToHex(RxBuffTemp, HexData, EthRxLen);
|
||||||
|
if(ret > 0)
|
||||||
|
GateWay->SvrRevCallBack(GateWay, HexData, ret);
|
||||||
|
memset(EthRxBuff, 0x00, ETH_RX_LEN_MAX);
|
||||||
|
EthRxLen = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Eth_Thread_Entry(void *parameter)
|
||||||
|
{
|
||||||
|
GateWayPara GateWay = (GateWayPara)parameter;
|
||||||
|
|
||||||
|
EthIRQ_Sem = rt_sem_create("ethi_sem", 0, RT_IPC_FLAG_FIFO);
|
||||||
|
if(EthIRQ_Sem == RT_NULL) {
|
||||||
|
rt_kprintf("EthIRQ Sem Create Failed!\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
EthInit(GateWay);
|
||||||
|
ETH_RESET_CLR();
|
||||||
|
rt_thread_delay(10);
|
||||||
|
ETH_RESET_SET();
|
||||||
|
|
||||||
|
EthRev_Thread = rt_thread_create("EthRev", EthRev_Thread_Entry, parameter, 3000, 3, 20);
|
||||||
|
if (EthRev_Thread != RT_NULL) {
|
||||||
|
rt_thread_startup(EthRev_Thread);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rt_kprintf("EthRev Thread Create Failed! Exit...\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
rt_kprintf("Eth Thread is running!\r\n");
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
if(GateWay->ConfigPara.Comm != ETH_COMM) {
|
||||||
|
rt_thread_delay(100);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
EthLoopHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -41,7 +41,7 @@ void LoraIRQ_Thread_Entry(void *parameter)
|
|||||||
rt_err_t result;
|
rt_err_t result;
|
||||||
static uint16_t LoraErrCnt = 0;
|
static uint16_t LoraErrCnt = 0;
|
||||||
|
|
||||||
Debug_Printf("LoraRev Thread is running!\r\n");
|
Debug_Printf("LoraRev Thread is running!\r\n");
|
||||||
while(1) {
|
while(1) {
|
||||||
if(GateWay->ConfigPara.Lora.OnOff == false) {
|
if(GateWay->ConfigPara.Lora.OnOff == false) {
|
||||||
rt_thread_delay(100);
|
rt_thread_delay(100);
|
||||||
@@ -57,7 +57,7 @@ void LoraIRQ_Thread_Entry(void *parameter)
|
|||||||
LoraErrCnt++;
|
LoraErrCnt++;
|
||||||
if(LoraErrCnt > LORA_ERR_RESET_DLY_MAX) { //15分钟内没有收到lora数据重启lora模块
|
if(LoraErrCnt > LORA_ERR_RESET_DLY_MAX) { //15分钟内没有收到lora数据重启lora模块
|
||||||
LoraErrCnt = 0;
|
LoraErrCnt = 0;
|
||||||
Debug_Printf("Lora Reset!\r\n");
|
Debug_Printf("Lora Reset!\r\n");
|
||||||
Sx1276LoRaInit(LoraRevCallBack);
|
Sx1276LoRaInit(LoraRevCallBack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ void Lora_Thread_Entry(void *parameter)
|
|||||||
rt_thread_startup(LoraIRQ_Thread);
|
rt_thread_startup(LoraIRQ_Thread);
|
||||||
|
|
||||||
Sx1276LoRaInit(LoraRevCallBack);
|
Sx1276LoRaInit(LoraRevCallBack);
|
||||||
Debug_Printf("Lora Thread is running!\r\n");
|
Debug_Printf("Lora Thread is running!\r\n");
|
||||||
#ifdef LORA_LOWPOWER
|
#ifdef LORA_LOWPOWER
|
||||||
while(1) {
|
while(1) {
|
||||||
if(GateWay->ConfigPara.Lora.OnOff == false) {
|
if(GateWay->ConfigPara.Lora.OnOff == false) {
|
||||||
|
|||||||
@@ -653,7 +653,7 @@ int CommUnitAnalyze(GateWayPara GateWay, uint8_t *rData, uint16_t rLen, SendData
|
|||||||
// int16_t Rssi;
|
// int16_t Rssi;
|
||||||
// int8_t Snr;
|
// int8_t Snr;
|
||||||
// SX1276LoCalcRssiSnr(&Rssi, &Snr);
|
// SX1276LoCalcRssiSnr(&Rssi, &Snr);
|
||||||
MAIN_DBG_LOG("\r\nCUMac:%02X-%02X-%02X-%02X-%02X-%02X, Bat: %d%, SN: %d,Rssi:%d, Snr:%d\r\n",
|
MAIN_DBG_LOG("\r\nCUMac:%02X-%02X-%02X-%02X-%02X-%02X, Bat: %d%, SN: %d, Rssi:%d, Snr:%d\r\n",
|
||||||
CUHeader->DevMac[0], CUHeader->DevMac[1], CUHeader->DevMac[2], CUHeader->DevMac[3], CUHeader->DevMac[4], CUHeader->DevMac[5],
|
CUHeader->DevMac[0], CUHeader->DevMac[1], CUHeader->DevMac[2], CUHeader->DevMac[3], CUHeader->DevMac[4], CUHeader->DevMac[5],
|
||||||
GateWay->ConfigPara.CommUnitArray[CommUnitIdx].BatLevel,
|
GateWay->ConfigPara.CommUnitArray[CommUnitIdx].BatLevel,
|
||||||
GateWay->ConfigPara.CommUnitArray[CommUnitIdx].SensorN,
|
GateWay->ConfigPara.CommUnitArray[CommUnitIdx].SensorN,
|
||||||
|
|||||||
@@ -209,57 +209,57 @@ static void Xtal32_ClockConfig(void)
|
|||||||
****************************************************************************************/
|
****************************************************************************************/
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DbgUartRec
|
* 函数名称: DbgOrCat1UartRec
|
||||||
* 功能描述: 调试串口接收函数
|
* 功能描述: 调试和Cat1串口接收函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 返回收到的字符
|
* 返 回 值: 返回收到的字符
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static uint8_t DbgUartRec(void)
|
static uint8_t DbgOrCat1UartRec(void)
|
||||||
{
|
{
|
||||||
uint16_t u16Data = USART_RecData(DBG_USART_CH);
|
uint16_t u16Data = USART_RecData(DBG_OR_CAT1_USART_CH);
|
||||||
return (uint8_t)u16Data;
|
return (uint8_t)u16Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DBGUsartErrIrqCallback
|
* 函数名称: DBGOrCat1UsartErrIrqCallback
|
||||||
* 功能描述: 调试串口错误中断回调函数
|
* 功能描述: 调试串口错误中断回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void DBGUsartErrIrqCallback(void)
|
static void DBGOrCat1UsartErrIrqCallback(void)
|
||||||
{
|
{
|
||||||
if(DBG_USART_CH->SR_f.ORE) {
|
if(DBG_OR_CAT1_USART_CH->SR_f.ORE) {
|
||||||
DBG_USART_CH->CR1_f.CORE = 1;
|
DBG_OR_CAT1_USART_CH->CR1_f.CORE = 1;
|
||||||
USART_RecData(DBG_USART_CH);
|
USART_RecData(DBG_OR_CAT1_USART_CH);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(DBG_USART_CH->SR_f.PE)
|
if(DBG_OR_CAT1_USART_CH->SR_f.PE)
|
||||||
DBG_USART_CH->CR1_f.CPE = 1;
|
DBG_OR_CAT1_USART_CH->CR1_f.CPE = 1;
|
||||||
|
|
||||||
if(DBG_USART_CH->SR_f.FE)
|
if(DBG_OR_CAT1_USART_CH->SR_f.FE)
|
||||||
DBG_USART_CH->CR1_f.CFE = 1;
|
DBG_OR_CAT1_USART_CH->CR1_f.CFE = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DbgUsartRxIrqCallback
|
* 函数名称: DbgOrCatUsartRxIrqCallback
|
||||||
* 功能描述: 调试串口接收中断回调函数
|
* 功能描述: 调试和Cat1串口接收中断回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void DbgUsartRxIrqCallback(void)
|
static void DbgOrCat1UsartRxIrqCallback(void)
|
||||||
{
|
{
|
||||||
uint8_t rData = DbgUartRec();
|
uint8_t rData = DbgOrCat1UartRec();
|
||||||
DbgRxIrqCallback(rData);
|
DbgOrCat1RxIrqCallback(rData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DbgUart_Config
|
* 函数名称: DbgOrCat1Uart_Config
|
||||||
* 功能描述: 调试串口配置函数
|
* 功能描述: 调试和cat1串口配置函数
|
||||||
* 参 数: BaudRate 串口波特率
|
* 参 数: BaudRate 串口波特率
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void DbgUart_Config(uint32_t BaudRate)
|
void DbgOrCat1Uart_Config(uint32_t BaudRate)
|
||||||
{
|
{
|
||||||
stc_usart_uart_init_t stcInitCfg;
|
stc_usart_uart_init_t stcInitCfg;
|
||||||
stc_irq_regi_conf_t stcIrqRegiCfg;
|
stc_irq_regi_conf_t stcIrqRegiCfg;
|
||||||
@@ -269,8 +269,8 @@ void DbgUart_Config(uint32_t BaudRate)
|
|||||||
MEM_ZERO_STRUCT(stcPortInit);
|
MEM_ZERO_STRUCT(stcPortInit);
|
||||||
|
|
||||||
stcPortInit.enPinOType = Pin_OType_Cmos;
|
stcPortInit.enPinOType = Pin_OType_Cmos;
|
||||||
PORT_Init(DBG_USART_RX_PORT, DBG_USART_RX_PIN, &stcPortInit);
|
PORT_Init(DBG_OR_CAT1_USART_RX_PORT, DBG_OR_CAT1_USART_RX_PIN, &stcPortInit);
|
||||||
PORT_Init(DBG_USART_TX_PORT, DBG_USART_TX_PIN, &stcPortInit);
|
PORT_Init(DBG_OR_CAT1_USART_TX_PORT, DBG_OR_CAT1_USART_TX_PIN, &stcPortInit);
|
||||||
|
|
||||||
stcInitCfg.enClkMode = UsartIntClkCkNoOutput;
|
stcInitCfg.enClkMode = UsartIntClkCkNoOutput;
|
||||||
stcInitCfg.enClkDiv = UsartClkDiv_1;
|
stcInitCfg.enClkDiv = UsartClkDiv_1;
|
||||||
@@ -282,35 +282,35 @@ void DbgUart_Config(uint32_t BaudRate)
|
|||||||
stcInitCfg.enDetectMode = UsartStartBitFallEdge;
|
stcInitCfg.enDetectMode = UsartStartBitFallEdge;
|
||||||
stcInitCfg.enHwFlow = UsartRtsEnable;
|
stcInitCfg.enHwFlow = UsartRtsEnable;
|
||||||
|
|
||||||
PWC_Fcg1PeriphClockCmd(DBG_FCG1_PERIPH, Enable);
|
PWC_Fcg1PeriphClockCmd(DBG_OR_CAT1_FCG1_PERIPH, Enable);
|
||||||
|
|
||||||
PORT_SetFunc(DBG_USART_RX_PORT, DBG_USART_RX_PIN, DBG_USART_RX_FUNC, Disable);
|
PORT_SetFunc(DBG_OR_CAT1_USART_RX_PORT, DBG_OR_CAT1_USART_RX_PIN, DBG_OR_CAT1_USART_RX_FUNC, Disable);
|
||||||
PORT_SetFunc(DBG_USART_TX_PORT, DBG_USART_TX_PIN, DBG_USART_TX_FUNC, Disable);
|
PORT_SetFunc(DBG_OR_CAT1_USART_TX_PORT, DBG_OR_CAT1_USART_TX_PIN, DBG_OR_CAT1_USART_TX_FUNC, Disable);
|
||||||
|
|
||||||
enRet = USART_UART_Init(DBG_USART_CH, &stcInitCfg);
|
enRet = USART_UART_Init(DBG_OR_CAT1_USART_CH, &stcInitCfg);
|
||||||
if(enRet != Ok) {
|
if(enRet != Ok) {
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
enRet = USART_SetBaudrate(DBG_USART_CH, BaudRate);
|
enRet = USART_SetBaudrate(DBG_OR_CAT1_USART_CH, BaudRate);
|
||||||
if(enRet != Ok) {
|
if(enRet != Ok) {
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
stcIrqRegiCfg.enIRQn = DBGUART_IRQn;
|
stcIrqRegiCfg.enIRQn = DBG_OR_CAT1_UART_IRQn;
|
||||||
stcIrqRegiCfg.pfnCallback = &DbgUsartRxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &DbgOrCat1UsartRxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = DBG_USART_RI_NUM;
|
stcIrqRegiCfg.enIntSrc = DBG_OR_CAT1_USART_RI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
|
|
||||||
/* Set USART RX error IRQ */
|
/* Set USART RX error IRQ */
|
||||||
stcIrqRegiCfg.enIRQn = DBGUART_EI_IRQn;
|
stcIrqRegiCfg.enIRQn = DBG_OR_CAT1_UART_EI_IRQn;
|
||||||
stcIrqRegiCfg.pfnCallback = &DBGUsartErrIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &DBGOrCat1UsartErrIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = DBG_USART_EI_NUM;
|
stcIrqRegiCfg.enIntSrc = DBG_OR_CAT1_USART_EI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ void DbgUart_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -329,27 +329,27 @@ void DbgUart_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
#endif
|
#endif
|
||||||
USART_FuncCmd(DBG_USART_CH, UsartTx, Enable);
|
USART_FuncCmd(DBG_OR_CAT1_USART_CH, UsartTx, Enable);
|
||||||
USART_FuncCmd(DBG_USART_CH, UsartRx, Enable);
|
USART_FuncCmd(DBG_OR_CAT1_USART_CH, UsartRx, Enable);
|
||||||
USART_FuncCmd(DBG_USART_CH, UsartRxInt, Enable);
|
USART_FuncCmd(DBG_OR_CAT1_USART_CH, UsartRxInt, Enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DebugUartSend
|
* 函数名称: DebugOrCat1UartSend
|
||||||
* 功能描述: 调试串口发送函数
|
* 功能描述: 调试和Cat1串口发送函数
|
||||||
* 参 数: sData 发送数据入口指针
|
* 参 数: sData 发送数据入口指针
|
||||||
sLen 发送数据长度
|
sLen 发送数据长度
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void DebugUartSend(uint8_t *sData, uint16_t sLen)
|
void DebugOrCat1UartSend(uint8_t *sData, uint16_t sLen)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < sLen; i++) {
|
for(int i = 0; i < sLen; i++) {
|
||||||
USART_SendData(DBG_USART_CH, sData[i]);
|
USART_SendData(DBG_OR_CAT1_USART_CH, sData[i]);
|
||||||
while(USART_GetStatus(DBG_USART_CH, UsartTxComplete) == Reset);
|
while(USART_GetStatus(DBG_OR_CAT1_USART_CH, UsartTxComplete) == Reset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,7 +450,7 @@ void RS485Ch1_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &RS485Ch1UsartRxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &RS485Ch1UsartRxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = RS485_CH1_USART_RI_NUM;
|
stcIrqRegiCfg.enIntSrc = RS485_CH1_USART_RI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -460,7 +460,7 @@ void RS485Ch1_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &RS485Ch1UsartErrIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &RS485Ch1UsartErrIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = RS485_CH1_USART_EI_NUM;
|
stcIrqRegiCfg.enIntSrc = RS485_CH1_USART_EI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -470,7 +470,7 @@ void RS485Ch1_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -479,7 +479,7 @@ void RS485Ch1_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
#endif
|
#endif
|
||||||
@@ -600,7 +600,7 @@ void RS485Ch2_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &RS485Ch2UsartRxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &RS485Ch2UsartRxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = RS485_CH2_USART_RI_NUM;
|
stcIrqRegiCfg.enIntSrc = RS485_CH2_USART_RI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -610,7 +610,7 @@ void RS485Ch2_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &RS485Ch2UsartErrIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &RS485Ch2UsartErrIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = RS485_CH2_USART_EI_NUM;
|
stcIrqRegiCfg.enIntSrc = RS485_CH2_USART_EI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -620,7 +620,7 @@ void RS485Ch2_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -629,7 +629,7 @@ void RS485Ch2_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
#endif
|
#endif
|
||||||
@@ -662,57 +662,57 @@ void RS485Ch2UartSend(uint8_t *sData, uint16_t sLen)
|
|||||||
****************************************************************************************/
|
****************************************************************************************/
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: EthOrCat1UartRec
|
* 函数名称: EthUartRec
|
||||||
* 功能描述: cat1和eth串口接收函数
|
* 功能描述: eth串口接收函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 返回收到的字符
|
* 返 回 值: 返回收到的字符
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static uint8_t EthOrCat1UartRec(void)
|
static uint8_t EthUartRec(void)
|
||||||
{
|
{
|
||||||
uint16_t u16Data = USART_RecData(ETH_OR_CAT1_USART_CH);
|
uint16_t u16Data = USART_RecData(ETH_USART_CH);
|
||||||
return (uint8_t)u16Data;
|
return (uint8_t)u16Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RS485Ch1UsartErrIrqCallback
|
* 函数名称: EthUsartErrIrqCallback
|
||||||
* 功能描述: cat1和eth串口错误中断回调函数
|
* 功能描述: eth串口错误中断回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void EthOrCat1UsartErrIrqCallback(void)
|
static void EthUsartErrIrqCallback(void)
|
||||||
{
|
{
|
||||||
if(ETH_OR_CAT1_USART_CH->SR_f.ORE) {
|
if(ETH_USART_CH->SR_f.ORE) {
|
||||||
ETH_OR_CAT1_USART_CH->CR1_f.CORE = 1;
|
ETH_USART_CH->CR1_f.CORE = 1;
|
||||||
USART_RecData(ETH_OR_CAT1_USART_CH);
|
USART_RecData(ETH_USART_CH);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ETH_OR_CAT1_USART_CH->SR_f.PE)
|
if(ETH_USART_CH->SR_f.PE)
|
||||||
ETH_OR_CAT1_USART_CH->CR1_f.CPE = 1;
|
ETH_USART_CH->CR1_f.CPE = 1;
|
||||||
|
|
||||||
if(ETH_OR_CAT1_USART_CH->SR_f.FE)
|
if(ETH_USART_CH->SR_f.FE)
|
||||||
ETH_OR_CAT1_USART_CH->CR1_f.CFE = 1;
|
ETH_USART_CH->CR1_f.CFE = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RS485Ch1UsartRxIrqCallback
|
* 函数名称: EthUsartRxIrqCallback
|
||||||
* 功能描述: cat1和eth串口接收中断回调函数
|
* 功能描述: eth串口接收中断回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void EthOrCat1UsartRxIrqCallback(void)
|
static void EthUsartRxIrqCallback(void)
|
||||||
{
|
{
|
||||||
uint8_t rData =EthOrCat1UartRec();
|
uint8_t rData =EthUartRec();
|
||||||
EthOrCat1RxIrqCallback(rData);
|
EthIrqCallbackHandler(rData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RS485Ch1_Config
|
* 函数名称: Eth_Config
|
||||||
* 功能描述: cat1和eth串口配置函数
|
* 功能描述: eth串口配置函数
|
||||||
* 参 数: BaudRate 串口波特率
|
* 参 数: BaudRate 串口波特率
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void EthOrCat1_Config(uint32_t BaudRate)
|
void Eth_Config(uint32_t BaudRate)
|
||||||
{
|
{
|
||||||
stc_usart_uart_init_t stcInitCfg;
|
stc_usart_uart_init_t stcInitCfg;
|
||||||
stc_irq_regi_conf_t stcIrqRegiCfg;
|
stc_irq_regi_conf_t stcIrqRegiCfg;
|
||||||
@@ -722,8 +722,8 @@ void EthOrCat1_Config(uint32_t BaudRate)
|
|||||||
MEM_ZERO_STRUCT(stcPortInit);
|
MEM_ZERO_STRUCT(stcPortInit);
|
||||||
|
|
||||||
stcPortInit.enPinOType = Pin_OType_Cmos;
|
stcPortInit.enPinOType = Pin_OType_Cmos;
|
||||||
PORT_Init(ETH_OR_CAT1_USART_RX_PORT, ETH_OR_CAT1_USART_RX_PIN, &stcPortInit);
|
PORT_Init(ETH_USART_RX_PORT, ETH_USART_RX_PIN, &stcPortInit);
|
||||||
PORT_Init(ETH_OR_CAT1_USART_TX_PORT, ETH_OR_CAT1_USART_TX_PIN, &stcPortInit);
|
PORT_Init(ETH_USART_TX_PORT, ETH_USART_TX_PIN, &stcPortInit);
|
||||||
|
|
||||||
stcInitCfg.enClkMode = UsartIntClkCkNoOutput;
|
stcInitCfg.enClkMode = UsartIntClkCkNoOutput;
|
||||||
stcInitCfg.enClkDiv = UsartClkDiv_1;
|
stcInitCfg.enClkDiv = UsartClkDiv_1;
|
||||||
@@ -735,35 +735,35 @@ void EthOrCat1_Config(uint32_t BaudRate)
|
|||||||
stcInitCfg.enDetectMode = UsartStartBitFallEdge;
|
stcInitCfg.enDetectMode = UsartStartBitFallEdge;
|
||||||
stcInitCfg.enHwFlow = UsartRtsEnable;
|
stcInitCfg.enHwFlow = UsartRtsEnable;
|
||||||
|
|
||||||
PWC_Fcg1PeriphClockCmd(ETH_OR_CAT1_FCG1_PERIPH, Enable);
|
PWC_Fcg1PeriphClockCmd(ETH_FCG1_PERIPH, Enable);
|
||||||
|
|
||||||
PORT_SetFunc(ETH_OR_CAT1_USART_RX_PORT, ETH_OR_CAT1_USART_RX_PIN, ETH_OR_CAT1_USART_RX_FUNC, Disable);
|
PORT_SetFunc(ETH_USART_RX_PORT, ETH_USART_RX_PIN, ETH_USART_RX_FUNC, Disable);
|
||||||
PORT_SetFunc(ETH_OR_CAT1_USART_TX_PORT, ETH_OR_CAT1_USART_TX_PIN, ETH_OR_CAT1_USART_TX_FUNC, Disable);
|
PORT_SetFunc(ETH_USART_TX_PORT, ETH_USART_TX_PIN, ETH_USART_TX_FUNC, Disable);
|
||||||
|
|
||||||
enRet = USART_UART_Init(ETH_OR_CAT1_USART_CH, &stcInitCfg);
|
enRet = USART_UART_Init(ETH_USART_CH, &stcInitCfg);
|
||||||
if(enRet != Ok) {
|
if(enRet != Ok) {
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
enRet = USART_SetBaudrate(ETH_OR_CAT1_USART_CH, BaudRate);
|
enRet = USART_SetBaudrate(ETH_USART_CH, BaudRate);
|
||||||
if(enRet != Ok) {
|
if(enRet != Ok) {
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
stcIrqRegiCfg.enIRQn = ETH_OR_CAT1_UART_IRQn;
|
stcIrqRegiCfg.enIRQn = ETH_UART_IRQn;
|
||||||
stcIrqRegiCfg.pfnCallback = &EthOrCat1UsartRxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &EthUsartRxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = ETH_OR_CAT1_USART_RI_NUM;
|
stcIrqRegiCfg.enIntSrc = ETH_USART_RI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
|
|
||||||
/* Set USART RX error IRQ */
|
/* Set USART RX error IRQ */
|
||||||
stcIrqRegiCfg.enIRQn = ETH_OR_CAT1_UART_EI_IRQn;
|
stcIrqRegiCfg.enIRQn = ETH_UART_EI_IRQn;
|
||||||
stcIrqRegiCfg.pfnCallback = &EthOrCat1UsartErrIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &EthUsartErrIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = ETH_OR_CAT1_USART_EI_NUM;
|
stcIrqRegiCfg.enIntSrc = ETH_USART_EI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -773,7 +773,7 @@ void EthOrCat1_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
@@ -782,27 +782,27 @@ void EthOrCat1_Config(uint32_t BaudRate)
|
|||||||
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &UsartTxCmpltIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
stcIrqRegiCfg.enIntSrc = USART_TCI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
NVIC_SetPriority(stcIrqRegiCfg.enIRQn, ETH_USART_TCI_NUM);
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
#endif
|
#endif
|
||||||
USART_FuncCmd(ETH_OR_CAT1_USART_CH, UsartTx, Enable);
|
USART_FuncCmd(ETH_USART_CH, UsartTx, Enable);
|
||||||
USART_FuncCmd(ETH_OR_CAT1_USART_CH, UsartRx, Enable);
|
USART_FuncCmd(ETH_USART_CH, UsartRx, Enable);
|
||||||
USART_FuncCmd(ETH_OR_CAT1_USART_CH, UsartRxInt, Enable);
|
USART_FuncCmd(ETH_USART_CH, UsartRxInt, Enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: EthOrCat1UartSend
|
* 函数名称: EthUartSend
|
||||||
* 功能描述: cat1和eth串口发送函数
|
* 功能描述: eth串口发送函数
|
||||||
* 参 数: sData 发送数据入口指针
|
* 参 数: sData 发送数据入口指针
|
||||||
sLen 发送数据长度
|
sLen 发送数据长度
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void EthOrCat1UartSend(uint8_t *sData, uint16_t sLen)
|
void EthUartSend(uint8_t *sData, uint16_t sLen)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < sLen; i++) {
|
for(int i = 0; i < sLen; i++) {
|
||||||
USART_SendData(ETH_OR_CAT1_USART_CH, sData[i]);
|
USART_SendData(ETH_USART_CH, sData[i]);
|
||||||
while(USART_GetStatus(ETH_OR_CAT1_USART_CH, UsartTxComplete) == Reset);
|
while(USART_GetStatus(ETH_USART_CH, UsartTxComplete) == Reset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -869,16 +869,15 @@ static void GPIO_Config(void)
|
|||||||
// PORT_Init(RS485_CH2_VOL_CTRL_PORT, RS485_CH2_VOL_CTRL_PIN, &stcPortInit);
|
// PORT_Init(RS485_CH2_VOL_CTRL_PORT, RS485_CH2_VOL_CTRL_PIN, &stcPortInit);
|
||||||
// RS485_CH1_VOL_5V();
|
// RS485_CH1_VOL_5V();
|
||||||
|
|
||||||
PORT_Init(ETH_OR_CAT1_CTRL_PORT, ETH_OR_CAT1_CTRL_PIN, &stcPortInit);
|
|
||||||
// PORT_Init(ETH_OR_CAT1_TX_CTRL_PORT, ETH_OR_CAT1_TX_CTRL_PIN, &stcPortInit);
|
|
||||||
ETH_ON();
|
|
||||||
|
|
||||||
PORT_Init(CAT1_PWR_KEY_PORT, CAT1_PWR_KEY_PIN, &stcPortInit);
|
PORT_Init(CAT1_PWR_KEY_PORT, CAT1_PWR_KEY_PIN, &stcPortInit);
|
||||||
CAT1_PWR_KEY_SET();
|
CAT1_PWR_KEY_SET();
|
||||||
|
|
||||||
PORT_Init(CAT1_RESET_PORT, CAT1_RESET_PIN, &stcPortInit);
|
PORT_Init(CAT1_RESET_PORT, CAT1_RESET_PIN, &stcPortInit);
|
||||||
CAT1_RESET_CLR();
|
CAT1_RESET_CLR();
|
||||||
|
|
||||||
|
// PORT_Init(CAT1_WAKEUP_PORT, CAT1_WAKEUP_PIN, &stcPortInit);
|
||||||
|
// CAT1_WAKEUP_SET();
|
||||||
|
|
||||||
// PORT_Init(CAT1_POW_PORT, CAT1_POW_PIN, &stcPortInit);
|
// PORT_Init(CAT1_POW_PORT, CAT1_POW_PIN, &stcPortInit);
|
||||||
// CAT1_POW_OFF();
|
// CAT1_POW_OFF();
|
||||||
|
|
||||||
@@ -912,6 +911,11 @@ static void GPIO_Config(void)
|
|||||||
PORT_Init(LORA_POW_PORT, LORA_POW_PIN, &stcPortInit);
|
PORT_Init(LORA_POW_PORT, LORA_POW_PIN, &stcPortInit);
|
||||||
LORA_POW_OFF();
|
LORA_POW_OFF();
|
||||||
|
|
||||||
|
//stcPortInit.enPullUp = Enable;
|
||||||
|
PORT_Init(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN, &stcPortInit);
|
||||||
|
DBG_ON();
|
||||||
|
|
||||||
|
stcPortInit.enPullUp = Enable;
|
||||||
stcPortInit.enPinMode = Pin_Mode_In;
|
stcPortInit.enPinMode = Pin_Mode_In;
|
||||||
PORT_Init(ETH_LINK_PORT, ETH_LINK_PIN, &stcPortInit);
|
PORT_Init(ETH_LINK_PORT, ETH_LINK_PIN, &stcPortInit);
|
||||||
|
|
||||||
@@ -1194,7 +1198,7 @@ static void Rtc_Config(void)
|
|||||||
// stcIrqRegiConf.pfnCallback = &RtcPeriod_IrqCallback;
|
// stcIrqRegiConf.pfnCallback = &RtcPeriod_IrqCallback;
|
||||||
// enIrqRegistration(&stcIrqRegiConf);
|
// enIrqRegistration(&stcIrqRegiConf);
|
||||||
// NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
|
// NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
|
||||||
// NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
|
// NVIC_SetPriority(stcIrqRegiConf.enIRQn, ETH_USART_TCI_NUM);
|
||||||
// NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);
|
// NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);
|
||||||
// enIntWakeupEnable(RtcPeriodWU);
|
// enIntWakeupEnable(RtcPeriodWU);
|
||||||
// /* Enable period interrupt */
|
// /* Enable period interrupt */
|
||||||
@@ -1652,7 +1656,7 @@ int dev_boot_write_param(boot_para_t Param)
|
|||||||
// PWC_ClkRecover();
|
// PWC_ClkRecover();
|
||||||
// //SystemClockConfig();
|
// //SystemClockConfig();
|
||||||
// Spi_Config();
|
// Spi_Config();
|
||||||
// DbgUart_Config(500000);
|
// DbgOrCat1Uart_Config(115200);
|
||||||
// //GPIO_Config();
|
// //GPIO_Config();
|
||||||
// //SysTick_Resume();
|
// //SysTick_Resume();
|
||||||
// SysTick_Init(1000);
|
// SysTick_Init(1000);
|
||||||
@@ -1710,8 +1714,8 @@ void BSP_Init(void)
|
|||||||
SystemClockConfig();
|
SystemClockConfig();
|
||||||
Xtal32_ClockConfig();
|
Xtal32_ClockConfig();
|
||||||
|
|
||||||
DbgUart_Config(500000);
|
DbgOrCat1Uart_Config(500000);
|
||||||
EthOrCat1_Config(115200);
|
Eth_Config(115200);
|
||||||
// RS485Ch1_Config(9600);
|
// RS485Ch1_Config(9600);
|
||||||
// RS485Ch2_Config(9600);
|
// RS485Ch2_Config(9600);
|
||||||
#if USE_SD_CARD
|
#if USE_SD_CARD
|
||||||
@@ -1745,12 +1749,12 @@ __weak void LoraTxRxIrqCallback(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DbgRxIrqCallback
|
* 函数名称: DbgOrCat1RxIrqCallback
|
||||||
* 功能描述: 调试串口接收中断外部重定向回调函数
|
* 功能描述: 调试串口接收中断外部重定向回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
__weak void DbgRxIrqCallback(uint8_t rData)
|
__weak void DbgOrCat1RxIrqCallback(uint8_t rData)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1778,12 +1782,34 @@ __weak void RS485Ch2RxIrqCallback(uint8_t rData)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: EthOrCat1RxIrqCallback
|
* 函数名称: Cat1IrqCallback
|
||||||
* 功能描述: Eth和Cat1串口接收中断外部重定向回调函数
|
* 功能描述: Cat1串口接收中断外部重定向回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
__weak void EthOrCat1RxIrqCallback(uint8_t rData)
|
__weak void Cat1IrqCallback(uint8_t rData)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************************
|
||||||
|
* 函数名称: Cat1OverHandler
|
||||||
|
* 功能描述: Cat1串口接收超时回调
|
||||||
|
* 参 数: 无
|
||||||
|
* 返 回 值: 无
|
||||||
|
*****************************************************************************************/
|
||||||
|
__weak void Cat1OverHandler(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************************
|
||||||
|
* 函数名称: EthIrqCallbackHandler
|
||||||
|
* 功能描述: Eth串口接收中断外部重定向回调函数
|
||||||
|
* 参 数: 无
|
||||||
|
* 返 回 值: 无
|
||||||
|
*****************************************************************************************/
|
||||||
|
__weak void EthIrqCallbackHandler(uint8_t rData)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "CatOneTask.h"
|
#include "CatOneTask.h"
|
||||||
|
#include "EthTask.h"
|
||||||
#include "LoraTask.h"
|
#include "LoraTask.h"
|
||||||
#include "CatOneTask.h"
|
|
||||||
#include "RS485Task.h"
|
#include "RS485Task.h"
|
||||||
#include "DebugCmd.h"
|
#include "DebugCmd.h"
|
||||||
#include "spiflash.h"
|
#include "spiflash.h"
|
||||||
@@ -34,7 +34,8 @@ static const uint8_t GateWayMac_BL10[6] = {0x81, 0x00, 0x00, 0x06, 0x00, 0x0A};
|
|||||||
bool MainDispEn = true;
|
bool MainDispEn = true;
|
||||||
|
|
||||||
static rt_thread_t Lora_Thread = RT_NULL;
|
static rt_thread_t Lora_Thread = RT_NULL;
|
||||||
static rt_thread_t Cat1Eth_Thread = RT_NULL;
|
static rt_thread_t Cat1_Thread = RT_NULL;
|
||||||
|
static rt_thread_t Eth_Thread = RT_NULL;
|
||||||
static rt_thread_t RS485Ch1_Thread = RT_NULL;
|
static rt_thread_t RS485Ch1_Thread = RT_NULL;
|
||||||
static rt_thread_t RS485Ch2_Thread = RT_NULL;
|
static rt_thread_t RS485Ch2_Thread = RT_NULL;
|
||||||
static rt_thread_t Debug_Thread = RT_NULL;
|
static rt_thread_t Debug_Thread = RT_NULL;
|
||||||
@@ -92,35 +93,6 @@ void SDCardTest(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void InfTest(void)
|
|
||||||
{
|
|
||||||
uint8_t sData[10] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A};
|
|
||||||
RS485_CH1_RX();
|
|
||||||
RS485_CH1_POW_ON();
|
|
||||||
rt_thread_delay(100);
|
|
||||||
RS485_CH1_POW_OFF();
|
|
||||||
|
|
||||||
RS485_CH2_POW_ON();
|
|
||||||
rt_thread_delay(100);
|
|
||||||
RS485_CH2_POW_OFF();
|
|
||||||
|
|
||||||
POWER_LED_OFF();
|
|
||||||
POWER_LED_ON();
|
|
||||||
LORA_RX_LED_SET();
|
|
||||||
LORA_RX_LED_CLR();
|
|
||||||
RS485_CH1_TX();
|
|
||||||
RS485_CH2_RX();
|
|
||||||
RS485Ch1_Config(500000);
|
|
||||||
RS485Ch2_Config(500000);
|
|
||||||
RS485Ch1UartSend(sData, 10);
|
|
||||||
rt_thread_delay(100);
|
|
||||||
|
|
||||||
RS485_CH2_TX();
|
|
||||||
RS485_CH1_RX();
|
|
||||||
RS485Ch2UartSend(sData, 10);
|
|
||||||
rt_thread_delay(100);
|
|
||||||
// SDCardTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GateWayInit(void)
|
void GateWayInit(void)
|
||||||
{
|
{
|
||||||
@@ -186,8 +158,7 @@ void GateWayInit(void)
|
|||||||
|
|
||||||
#if MAC_ADDR_TYPE == 0
|
#if MAC_ADDR_TYPE == 0
|
||||||
memcpy(GateWay.ConfigPara.GwMac, GateWayMac_Test, 6);
|
memcpy(GateWay.ConfigPara.GwMac, GateWayMac_Test, 6);
|
||||||
// GateWay.ConfigPara.DebugChannel = DEBUG_CH_RS485_1;
|
GateWay.ConfigPara.DebugChannel = DEBUG_CH_RS485_1;
|
||||||
GateWay.ConfigPara.DebugChannel = DEBUG_CH_DBG;
|
|
||||||
#elif MAC_ADDR_TYPE == 1
|
#elif MAC_ADDR_TYPE == 1
|
||||||
memcpy(GateWay.ConfigPara.GwMac, GateWayMac_BL1, 6);
|
memcpy(GateWay.ConfigPara.GwMac, GateWayMac_BL1, 6);
|
||||||
GateWay.ConfigPara.DebugChannel = DEBUG_CH_RS485_1;
|
GateWay.ConfigPara.DebugChannel = DEBUG_CH_RS485_1;
|
||||||
@@ -318,9 +289,11 @@ void GateWayInit(void)
|
|||||||
else
|
else
|
||||||
rt_kprintf("History Num: 0\r\n");
|
rt_kprintf("History Num: 0\r\n");
|
||||||
if(GateWay.ConfigPara.Comm == CATONE_COMM) {
|
if(GateWay.ConfigPara.Comm == CATONE_COMM) {
|
||||||
|
DbgOrCat1Uart_Config(115200);
|
||||||
CAT1_ON();
|
CAT1_ON();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
DBG_ON();
|
||||||
ETH_ON();
|
ETH_ON();
|
||||||
rt_thread_delay(1000);
|
rt_thread_delay(1000);
|
||||||
ETHReset();
|
ETHReset();
|
||||||
@@ -418,9 +391,15 @@ int main(void)
|
|||||||
else
|
else
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
Cat1Eth_Thread = rt_thread_create("Cat1Eth", CatOne_Eth_Thread_Entry, &GateWay, 4096, 3, 20);
|
Cat1_Thread = rt_thread_create("Cat1", CatOne_Thread_Entry, &GateWay, 4096, 3, 20);
|
||||||
if (Cat1Eth_Thread != RT_NULL)
|
if (Cat1_Thread != RT_NULL)
|
||||||
rt_thread_startup(Cat1Eth_Thread);
|
rt_thread_startup(Cat1_Thread);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
Eth_Thread = rt_thread_create("Eth", Eth_Thread_Entry, &GateWay, 4096, 3, 20);
|
||||||
|
if (Eth_Thread != RT_NULL)
|
||||||
|
rt_thread_startup(Eth_Thread);
|
||||||
else
|
else
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -437,9 +416,9 @@ int main(void)
|
|||||||
POWER_LED_OFF();
|
POWER_LED_OFF();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EthRxOverhandler();
|
EthOverHandler();
|
||||||
RS485RxOverhandler();
|
RS485RxOverhandler();
|
||||||
DebugRxOverhandler();
|
DebugOrCat1RxOverhandler();
|
||||||
if(OneSecondDlyCnt % 200 == 0) {
|
if(OneSecondDlyCnt % 200 == 0) {
|
||||||
FeedDog();
|
FeedDog();
|
||||||
LORA_RX_TOGGLE();
|
LORA_RX_TOGGLE();
|
||||||
|
|||||||
Reference in New Issue
Block a user