added handling of CanData To Tasks
This commit is contained in:
@@ -1,166 +1,23 @@
|
||||
#include "unity.h"
|
||||
|
||||
#include "UsbDataHandler.h"
|
||||
#include "pb_encode.h"
|
||||
#include "firmware.pb.h"
|
||||
|
||||
void setUp() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define START_PACKAES 10
|
||||
#define START_SIZE 123456
|
||||
#define START_CRC 0xffff
|
||||
#define START_DEVICE 0x04
|
||||
#define START_NAME "slave0x04.bin"
|
||||
|
||||
#define PACK_COUTNER 3
|
||||
#define PACK_CRC 0xabcd
|
||||
#define PACK_DEVICE 0x04
|
||||
#define PACK_DATA_SIZE 50
|
||||
|
||||
#define ACK_COUTNER 43
|
||||
#define ACK_CRC 0xabcdef
|
||||
#define ACK_DEVICE 0x9
|
||||
|
||||
#define DONE_CRC 0xffffffff
|
||||
#define DONE_DEVICE 0xf
|
||||
#define DONE_SIZE 1024 * 65
|
||||
|
||||
uint16_t StartCounter = 0;
|
||||
uint16_t PackageCounter = 0;
|
||||
uint16_t AckCounter = 0;
|
||||
uint16_t DoneCounter = 0;
|
||||
|
||||
|
||||
void transmit_package(uint16_t id, const pb_msgdesc_t *fields , const void* msg){
|
||||
UsbDataPacket buffer = {0};
|
||||
buffer.head.type = id;
|
||||
pb_ostream_t ostream = pb_ostream_from_buffer(buffer.data, sizeof(buffer.data));
|
||||
pb_encode(&ostream, fields, msg);
|
||||
buffer.head.length= ostream.bytes_written;
|
||||
|
||||
buffer.head.check = UsbDataPacket_head_sum(&buffer);
|
||||
|
||||
UsbDataHandler_RxCallback((uint8_t*)(&buffer), buffer.head.length+sizeof(UsbDataPacketHead));
|
||||
}
|
||||
|
||||
void test_UsbDataHandler(void) {
|
||||
// Set up the module
|
||||
UsbDataHandler_Start();
|
||||
|
||||
// Call the runner with no messages this should do nothing
|
||||
UsbDataHandler_Runner();
|
||||
|
||||
FirmwareStart start ={
|
||||
.name=START_NAME,
|
||||
.packages=START_PACKAES,
|
||||
.size=START_SIZE,
|
||||
.crc_fw=START_CRC,
|
||||
.device_id=START_DEVICE,
|
||||
};
|
||||
transmit_package(UsbPackageType_FIRMWARESTART, FirmwareStart_fields, &start);
|
||||
|
||||
// Call the runner with start message in the queue
|
||||
UsbDataHandler_Runner();
|
||||
TEST_ASSERT_EQUAL(StartCounter,1);
|
||||
|
||||
|
||||
//Put 2 packages in the buffer an parse them
|
||||
transmit_package(UsbPackageType_FIRMWARESTART, FirmwareStart_fields, &start);
|
||||
transmit_package(UsbPackageType_FIRMWARESTART, FirmwareStart_fields, &start);
|
||||
UsbDataHandler_Runner();
|
||||
UsbDataHandler_Runner();
|
||||
TEST_ASSERT_EQUAL(StartCounter,3);
|
||||
|
||||
|
||||
|
||||
FirmwarePackage pack = {
|
||||
.counter =PACK_COUTNER ,
|
||||
.crc_pac = PACK_CRC,
|
||||
.device_id= PACK_DEVICE,
|
||||
.data={.size = PACK_DATA_SIZE,
|
||||
.bytes={0}
|
||||
},
|
||||
};
|
||||
transmit_package(UsbPackageType_FIRMWAREPACKAGE, FirmwarePackage_fields, &pack);
|
||||
UsbDataHandler_Runner();
|
||||
TEST_ASSERT_EQUAL(PackageCounter,1);
|
||||
|
||||
FirmwarePackageAck ack = {
|
||||
.ack =true,
|
||||
.counter = ACK_COUTNER,
|
||||
.crc_pac = ACK_CRC,
|
||||
.device_id = ACK_DEVICE,
|
||||
};
|
||||
transmit_package(UsbPackageType_FIRMWAREPACKAGEACK, FirmwarePackageAck_fields, &ack);
|
||||
UsbDataHandler_Runner();
|
||||
TEST_ASSERT_EQUAL(PackageCounter,1);
|
||||
|
||||
|
||||
FirmwareDone done = {
|
||||
.crc_fw = DONE_CRC,
|
||||
.device_id = DONE_DEVICE,
|
||||
.size = DONE_SIZE,
|
||||
};
|
||||
|
||||
transmit_package(UsbPackageType_FIRMWAREDONE, FirmwareDone_fields, &done);
|
||||
UsbDataHandler_Runner();
|
||||
TEST_ASSERT_EQUAL(DoneCounter,1);
|
||||
|
||||
}
|
||||
|
||||
void tearDown() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
void test_UsbDataHandler(void);
|
||||
void test_CanData(void);
|
||||
|
||||
int main(void) {
|
||||
UNITY_BEGIN();
|
||||
RUN_TEST(test_UsbDataHandler);
|
||||
RUN_TEST(test_CanData);
|
||||
return UNITY_END();
|
||||
}
|
||||
|
||||
|
||||
void DataClbk_FirmwareStart(void * msg, uint32_t length) {
|
||||
FirmwareStart start;
|
||||
memcpy(&start,msg,sizeof(start));
|
||||
TEST_ASSERT_EQUAL(START_SIZE, start.size);
|
||||
TEST_ASSERT_EQUAL(START_PACKAES, start.packages);
|
||||
TEST_ASSERT_EQUAL(START_CRC, start.crc_fw);
|
||||
TEST_ASSERT_EQUAL(START_DEVICE, start.device_id);
|
||||
TEST_ASSERT_EQUAL_STRING(START_NAME,start.name);
|
||||
StartCounter++;
|
||||
}
|
||||
void DataClbk_FirmwarePackage(void * msg, uint32_t length) {
|
||||
FirmwarePackage pack;
|
||||
memcpy(&pack,msg,sizeof(pack));
|
||||
TEST_ASSERT_EQUAL(FirmwarePackage_size, length);
|
||||
TEST_ASSERT_EQUAL(PACK_COUTNER, pack.counter);
|
||||
TEST_ASSERT_EQUAL(PACK_CRC, pack.crc_pac);
|
||||
TEST_ASSERT_EQUAL(PACK_DEVICE, pack.device_id);
|
||||
TEST_ASSERT_EQUAL(PACK_DATA_SIZE, pack.data.size);
|
||||
PackageCounter++;
|
||||
}
|
||||
void DataClbk_FirmwarePackageAck(void * msg, uint32_t length) {
|
||||
FirmwarePackageAck ack;
|
||||
memcpy(&ack,msg,sizeof(ack));
|
||||
TEST_ASSERT_EQUAL(FirmwarePackageAck_size, length);
|
||||
TEST_ASSERT(ack.ack);
|
||||
TEST_ASSERT_EQUAL(ACK_COUTNER, ack.counter);
|
||||
TEST_ASSERT_EQUAL(ACK_CRC, ack.crc_pac);
|
||||
TEST_ASSERT_EQUAL(ACK_DEVICE, ack.device_id);
|
||||
|
||||
AckCounter++;
|
||||
}
|
||||
void DataClbk_FirmwareDone(void * msg, uint32_t length) {
|
||||
FirmwareDone done;
|
||||
memcpy(&done,msg,sizeof(done));
|
||||
TEST_ASSERT_EQUAL(FirmwareDone_size, length);
|
||||
TEST_ASSERT_EQUAL(DONE_CRC,done.crc_fw);
|
||||
TEST_ASSERT_EQUAL(DONE_DEVICE,done.device_id);
|
||||
TEST_ASSERT_EQUAL(DONE_SIZE,done.size);
|
||||
DoneCounter++;
|
||||
}
|
||||
Reference in New Issue
Block a user