113 lines
2.8 KiB
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;
|
|
} |