57 #include "Mockcan_cfg.h"
58 #include "Mockdatabase.h"
60 #include "Mockftask.h"
63 #include "Mockmpu_prototypes.h"
66 #include "bender_iso165c.h"
97 I165C_STATE_e currentState;
98 I165C_STATE_e nextState;
102 MPU_uxQueueMessagesWaiting_IgnoreAndReturn(1u);
103 MPU_xQueueReceive_IgnoreAndReturn(1u);
105 canMessage.
id = 0x22u;
106 for (uint8_t i = 1u; i <= 8u; i++) {
107 canMessage.
data[i] = i;
111 TEST_I165C_ResetCanData(&canMessage);
112 for (uint8_t i = 0u; i < 8u; i++) {
113 TEST_ASSERT_EQUAL(0u, canMessage.
data[i]);
117 dataWord = I165C_DW1;
120 TEST_I165C_WriteDataWord(dataWord, data16, &canMessage);
121 TEST_ASSERT_EQUAL(0x9Au, canMessage.
data[1u]);
122 TEST_ASSERT_EQUAL(0x02u, canMessage.
data[2u]);
123 dataWord = I165C_DW2;
124 TEST_I165C_WriteDataWord(dataWord, data16, &canMessage);
125 TEST_ASSERT_EQUAL(0x9Au, canMessage.
data[3u]);
126 TEST_ASSERT_EQUAL(0x02u, canMessage.
data[4u]);
128 for (uint8_t i = 1u; i <= 4u; i++) {
129 canMessage.
data[i] = i;
132 dataWord = I165C_DW1;
135 TEST_I165C_ReadDataWord(dataWord, &data16, canMessage);
136 TEST_ASSERT_EQUAL(0x201u, data16);
138 dataWord = I165C_DW2;
139 TEST_I165C_ReadDataWord(dataWord, &data16, canMessage);
140 TEST_ASSERT_EQUAL(0x403u, data16);
142 for (uint8_t i = 0u; i <= 5u; i++) {
143 canMessage.
data[i] = i + 1u;
146 dataWord = I165C_DW1;
149 TEST_I165C_ReadDataWordImdInfo(dataWord, &data16, canMessage);
150 TEST_ASSERT_EQUAL(0x201u, data16);
152 dataWord = I165C_DW2;
153 TEST_I165C_ReadDataWordImdInfo(dataWord, &data16, canMessage);
154 TEST_ASSERT_EQUAL(0x403u, data16);
156 dataWord = I165C_DW3;
157 TEST_I165C_ReadDataWordImdInfo(dataWord, &data16, canMessage);
158 TEST_ASSERT_EQUAL(0x605u, data16);
160 for (uint8_t i = 1u; i <= 4u; i++) {
161 canMessage.
data[i] = i;
164 dataByte = I165C_DB1;
167 TEST_I165C_ReadDataByte(dataByte, &data8, canMessage);
168 TEST_ASSERT_EQUAL(0x1u, data8);
170 dataByte = I165C_DB2;
171 TEST_I165C_ReadDataByte(dataByte, &data8, canMessage);
172 TEST_ASSERT_EQUAL(0x2u, data8);
174 dataByte = I165C_DB3;
175 TEST_I165C_ReadDataByte(dataByte, &data8, canMessage);
176 TEST_ASSERT_EQUAL(0x3u, data8);
178 dataByte = I165C_DB4;
179 TEST_I165C_ReadDataByte(dataByte, &data8, canMessage);
180 TEST_ASSERT_EQUAL(0x4u, data8);
186 TEST_I165C_WriteCmd(
id, command, &canMessage);
187 TEST_ASSERT_EQUAL(0xAu, canMessage.
id);
188 TEST_ASSERT_EQUAL(0xBu, canMessage.
data[0u]);
190 canMessage.
data[0u] = 0xA;
194 TEST_ASSERT_EQUAL(
true, TEST_I165C_CheckResponse(command, &canMessage));
195 canMessage.
data[0u] = 0xA;
197 TEST_ASSERT_EQUAL(
false, TEST_I165C_CheckResponse(command, &canMessage));
199 canMessage.
id = I165C_MESSAGETYPE_IMD_INFO;
202 TEST_ASSERT_EQUAL(
true, TEST_I165C_GetImdInfo(&canMessage));
203 canMessage.
id = I165C_MESSAGETYPE_IMD_INFO + 1u;
204 TEST_ASSERT_EQUAL(
false, TEST_I165C_GetImdInfo(&canMessage));
206 for (uint8_t i = 0u; i < 8u; i++) {
207 canMessage.
data[i] = 0u;
210 TEST_ASSERT_EQUAL(
true, TEST_I165C_IsInitialized(canMessage));
211 for (uint8_t i = 0u; i < 8u; i++) {
212 canMessage.
data[i] = 0xFFu;
214 TEST_ASSERT_EQUAL(
false, TEST_I165C_IsInitialized(canMessage));
218 canMessage.
data[0] = 0xA;
219 I165C_STATE_SELFTEST;
220 nextState = I165C_STATE_SET_ERROR_THRESHOLD_WAIT_ACK;
221 currentState = I165C_STATE_SET_ERROR_THRESHOLD;
226 TEST_I165C_CheckAcknowledgeArrived(command, ¤tState, nextState,
NULL_PTR, &canMessage));
229 TEST_I165C_CheckAcknowledgeArrived(command, ¤tState, nextState, &tries, &canMessage);
230 TEST_ASSERT_EQUAL(I165C_STATE_SET_ERROR_THRESHOLD_WAIT_ACK, currentState);
233 canMessage.
data[0] = 0xB;
234 nextState = I165C_STATE_SET_ERROR_THRESHOLD_WAIT_ACK;
235 currentState = I165C_STATE_SET_ERROR_THRESHOLD;
237 TEST_I165C_CheckAcknowledgeArrived(command, ¤tState, nextState, &tries, &canMessage);
238 TEST_ASSERT_EQUAL(tries, 1u);
239 tries = I165C_TRANSMISSION_TRIES - 1u;
241 canMessage.
data[0] = 0xB;
242 nextState = I165C_STATE_SET_ERROR_THRESHOLD_WAIT_ACK;
243 currentState = I165C_STATE_SET_ERROR_THRESHOLD;
248 TEST_I165C_CheckAcknowledgeArrived(command, ¤tState, nextState, &tries, &canMessage);
249 TEST_ASSERT_EQUAL(I165C_STATE_SELFTEST, currentState);
#define NULL_PTR
Null pointer.
uint8_t data[CAN_MAX_DLC]
#define TEST_ASSERT_FAIL_ASSERT(_code_under_test)
assert whether assert macro has failed
volatile bool ftsk_allQueuesCreated
void testMessageComposition(void)
Test function to compose/use CAN messages.
QueueHandle_t ftsk_dataQueue
QueueHandle_t ftsk_canRxQueue
QueueHandle_t ftsk_imdCanDataQueue