test-kod-bez/src/worker/worker_tools.c

113 lines
2.8 KiB
C

#include "worker.h"
#define ARRAY_SIZE(array) sizeof(array)/sizeof(array[0])
static inline void WORK_printArray (uint8_t* array, size_t size) {
for (size_t s = 0; s < size; s++) {
printf("%d, ", array[s]);
}
}
void WORK_formattedPrintArray(const char* str, uint8_t* array, size_t size) {
printf("WORKX: %s (%d bytes):", str, (int)size);
for (size_t s = 0; s < size; s++) {
printf("%d, ", array[s]);
}
printf("\n");
}
// printf("FILL:");for (int i = 0; i < 50; i++) {printf("%d:", worker->byteBuffer[i]);} printf("\n");
// Параметрический вывод пакета worker
int WORK_printBlocks(workerHost_s *worker, uint8_t mode) {
if (worker == NULL) {
return -1;
}
if (mode > 0) {
printf("TOOL: Packet consists of several units:\n");
}
// Вывод содержимого пакета
if (mode & 1) {
printf("TOOL: .. Packet:\n");
printf("TOOL: .... Address: %d \n", worker->packet->address);
// printf("TOOL: .... Flag: %d \n", worker->packet->flag);
printf("TOOL: .... Conrol Field: %d \n", worker->packet->control);
printf("TOOL: .... Info Field: ");
WORK_printArray(worker->packet->info, ARRAY_SIZE(worker->packet->info));
printf("\n");
printf("TOOL: .... FCS: %d \n", worker->packet->fcs);
}
// Вывод содержимого буфера fifo
if (mode & 3) {
size_t size = sizeof(worker->fifoWrite->data) / sizeof(worker->fifoWrite->data[0]);
printf("TOOL: .. FIFO:\n");
printf("TOOL: .... Data (%d items): ", (int)size);
for (size_t i = 0; i < size; i++) {
printf("%02X ", worker->fifoWrite->data[i]);
}
printf("\n");
printf("TOOL: .. Pointer: %d ", worker->fifoWrite->head);
}
return 0;
}
// Тестовое заполнение буфера
int WORK_testFill(uint8_t* buffer, size_t bufferSize) {
bufferSize++;
static uint8_t testbuffer[50] = {
0xaa,0xbb,
HDLC_PACKET_FLAG,
0xa1, 0xa2,
0xc1, 0xc2,
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
HDLC_PACKET_ESCAPE, HDLC_PACKET_FLAG,
0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xde,
0xcc, 0xcd,
HDLC_PACKET_FLAG
};
for (int i = 0; i < 50; i++) {
buffer[i] = testbuffer[i];
}
return 0;
}
// Тестирование фифо
int WORK_testFifo(fifo_s *fifo) {
printf("TEST: FIFO START:\n");
FIFO_put(fifo, 4);
FIFO_put(fifo, 3);
FIFO_put(fifo, 8);
FIFO_print(fifo);
uint8_t arr[10] = {0};
for (int a = 0; a < 10; a++) {
FIFO_get(fifo, &arr[a]);
printf("%d:", arr[a]);
}
printf("\n");
printf("TEST: FIFO END:\n");
return 0;
}
// Заполнение массива
int WORK_fillBuffer8b(uint8_t *buffer, size_t size) {
memset(buffer, 0, size);
for (size_t i = 0; i < size; i++) {
buffer[i] = i;
}
buffer[size/2] = HDLC_PACKET_FLAG;
return 0;
}