Mercurial > public > ostc4
comparison OtherSources/data_exchange_main_mini.c @ 5:e65d01b6a17e
MOVE files for other applications
author | JeanDo |
---|---|
date | Fri, 15 Dec 2017 01:45:20 +0100 |
parents | |
children | 7801c5d8a562 |
comparison
equal
deleted
inserted
replaced
4:89a87ddc2e47 | 5:e65d01b6a17e |
---|---|
1 /** | |
2 ****************************************************************************** | |
3 * @file data_exchange_main.c | |
4 * @author heinrichs/weikamp, Christian Weikamp | |
5 * @date 13-Oct-2014 | |
6 * @version V0.0.2 | |
7 * @since 27-May-2015 | |
8 | |
9 * @brief Communication with the second CPU == RTE system | |
10 * | |
11 @verbatim | |
12 ============================================================================== | |
13 ##### How to use ##### | |
14 ============================================================================== | |
15 | |
16 ============================================================================== | |
17 ##### Device Data ##### | |
18 ============================================================================== | |
19 | |
20 main CPU always sends the device data info that it has at the moment | |
21 | |
22 on start it is INT32_MIN, INT32_MAX and 0 | |
23 as initialized in data_central.c variable declaration | |
24 | |
25 second small CPU gets request to send its device data | |
26 | |
27 on receiption the data is merged with the data in externLogbookFlash, | |
28 stored on the externLogbookFlash and from now on send to small CPU | |
29 | |
30 @endverbatim | |
31 ****************************************************************************** | |
32 * @attention | |
33 * | |
34 * <h2><center>© COPYRIGHT(c) 2014 heinrichs weikamp</center></h2> | |
35 * | |
36 ****************************************************************************** | |
37 */ | |
38 | |
39 /* Includes ------------------------------------------------------------------*/ | |
40 #include <string.h> // for memcopy | |
41 #include "stm32f4xx_hal.h" | |
42 #include "stdio.h" | |
43 #include "ostc.h" | |
44 #include "data_central.h" | |
45 #include "data_exchange_main.h" | |
46 #include "base.h" | |
47 #include "externLogbookFlash.h" | |
48 | |
49 | |
50 /* Expoted variables --------------------------------------------------------*/ | |
51 | |
52 /* Private variables ---------------------------------------------------------*/ | |
53 | |
54 SDataReceiveFromMaster dataOut; | |
55 SDataExchangeSlaveToMaster dataIn; | |
56 | |
57 uint8_t data_old__lost_connection_to_slave_counter_temp = 0; | |
58 /* Private types -------------------------------------------------------------*/ | |
59 | |
60 uint8_t DataEX_check_header_and_footer_ok(void); | |
61 void DataEX_control_connection_while_asking_for_sleep(void); | |
62 | |
63 /* Exported functions --------------------------------------------------------*/ | |
64 | |
65 uint8_t DataEX_call(void) | |
66 { | |
67 DataEX_control_connection_while_asking_for_sleep(); | |
68 | |
69 for(int i=0;i<EXCHANGE_BUFFERSIZE;i++) | |
70 *(uint8_t *)(((uint32_t)&dataOut) + i) = 0; | |
71 | |
72 dataOut.mode = MODE_SHUTDOWN; | |
73 | |
74 dataOut.header.checkCode[0] = 0xBB; | |
75 dataOut.header.checkCode[1] = 0x01; | |
76 dataOut.header.checkCode[2] = 0x01; | |
77 dataOut.header.checkCode[3] = 0xBB; | |
78 | |
79 dataOut.footer.checkCode[0] = 0xF4; | |
80 dataOut.footer.checkCode[1] = 0xF3; | |
81 dataOut.footer.checkCode[2] = 0xF2; | |
82 dataOut.footer.checkCode[3] = 0xF1; | |
83 | |
84 HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_SET); | |
85 delayMicros(10); | |
86 | |
87 if(data_old__lost_connection_to_slave_counter_temp >= 3) | |
88 { | |
89 data_old__lost_connection_to_slave_counter_temp = 0; | |
90 } | |
91 else | |
92 { | |
93 HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_RESET); | |
94 } | |
95 | |
96 HAL_SPI_TransmitReceive_DMA(&cpu2DmaSpi, (uint8_t *)&dataOut, (uint8_t *)&dataIn, EXCHANGE_BUFFERSIZE+1); | |
97 return 1; | |
98 } | |
99 | |
100 | |
101 void DataEX_control_connection_while_asking_for_sleep(void) | |
102 { | |
103 if(!DataEX_check_header_and_footer_ok()) | |
104 { | |
105 data_old__lost_connection_to_slave_counter_temp += 1; | |
106 } | |
107 } | |
108 | |
109 uint8_t DataEX_check_header_and_footer_ok(void) | |
110 { | |
111 if(dataIn.header.checkCode[0] != 0xA1) | |
112 return 0; | |
113 if(dataIn.header.checkCode[1] != 0xA2) | |
114 return 0; | |
115 if(dataIn.header.checkCode[2] != 0xA3) | |
116 return 0; | |
117 if(dataIn.header.checkCode[3] != 0xA4) | |
118 return 0; | |
119 if(dataIn.footer.checkCode[0] != 0xE1) | |
120 return 0; | |
121 if(dataIn.footer.checkCode[1] != 0xE2) | |
122 return 0; | |
123 if(dataIn.footer.checkCode[2] != 0xE3) | |
124 return 0; | |
125 if(dataIn.footer.checkCode[3] != 0xE4) | |
126 return 0; | |
127 | |
128 return 1; | |
129 } | |
130 |