From 53329da84be8bb9136fc6481fcd1027fcdbe3dd0 Mon Sep 17 00:00:00 2001 From: JFinneganAloxy <93659484+JFinneganAloxy@users.noreply.github.com> Date: Tue, 19 Apr 2022 16:56:02 +0200 Subject: [PATCH 01/20] Create github-ci.yml --- .github/workflows/github-ci.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/github-ci.yml diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml new file mode 100644 index 000000000..19c9d583f --- /dev/null +++ b/.github/workflows/github-ci.yml @@ -0,0 +1,23 @@ +name: C/C++ CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: configure + run: ./configure + - name: make + run: make + - name: make check + run: make check + - name: make distcheck + run: make distcheck From 9bfedada1acbadcb1febe9b1cd26c8e56725c954 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Tue, 19 Apr 2022 17:15:00 +0200 Subject: [PATCH 02/20] Add jobs to CI which run the unit tests and the testsuite --- stack/tests/alp/main.c | 17 ++- stack/tests/fec/CMakeLists.txt | 2 +- stack/tests/fec/main.c | 248 ++++++++++++++++----------------- stack/tests/fifo/main.c | 131 +++++++++-------- 4 files changed, 202 insertions(+), 196 deletions(-) diff --git a/stack/tests/alp/main.c b/stack/tests/alp/main.c index 19c40702f..d0388e203 100644 --- a/stack/tests/alp/main.c +++ b/stack/tests/alp/main.c @@ -20,7 +20,9 @@ */ #include +#include #include + #include "debug.h" #include "alp.h" @@ -36,28 +38,29 @@ void test_alp_parse_length_operand() fifo_init(&fifo, data, sizeof(data)); fifo_put_byte(&fifo, 0x01); - uint32_t length = alp_parse_length_operand(&fifo); + uint32_t length; + assert(alp_parse_length_operand(&fifo, &length)); assert(length == 1); fifo_clear(&fifo); fifo_put_byte(&fifo, 0x40); fifo_put_byte(&fifo, 0x41); - length = alp_parse_length_operand(&fifo); + assert(alp_parse_length_operand(&fifo, &length)); assert(length == 65); fifo_clear(&fifo); fifo_put_byte(&fifo, 0x80); fifo_put_byte(&fifo, 0x40); fifo_put_byte(&fifo, 0x01); - length = alp_parse_length_operand(&fifo); + assert(alp_parse_length_operand(&fifo, &length)); assert(length == 0x4001); - + fifo_clear(&fifo); fifo_put_byte(&fifo, 0xC0); fifo_put_byte(&fifo, 0x41); fifo_put_byte(&fifo, 0x10); fifo_put_byte(&fifo, 0x00); - length = alp_parse_length_operand(&fifo); + assert(alp_parse_length_operand(&fifo, &length)); assert(length == 4263936); } @@ -68,6 +71,8 @@ void bootstrap() printf("Testing alp_parse_length_operand ... "); test_alp_parse_length_operand(); printf("Success!\n"); - + printf("Unit-tests for ALP completed\n"); + + exit(0); } diff --git a/stack/tests/fec/CMakeLists.txt b/stack/tests/fec/CMakeLists.txt index 18ca331e8..69014f010 100644 --- a/stack/tests/fec/CMakeLists.txt +++ b/stack/tests/fec/CMakeLists.txt @@ -16,7 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ]] -project(fec) +project(test_fec) cmake_minimum_required(VERSION 2.8) add_executable(${PROJECT_NAME} fec.c diff --git a/stack/tests/fec/main.c b/stack/tests/fec/main.c index 5037c45b9..6f03658db 100644 --- a/stack/tests/fec/main.c +++ b/stack/tests/fec/main.c @@ -16,23 +16,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include +#include "fec.h" #include +#include +#include #include #include -#include -#include "fec.h" #define BINARY 0 - -const char *byte_to_binary(uint8_t x) +const char* byte_to_binary(uint8_t x) { static char b[9]; b[0] = '\0'; uint8_t z; - for (z = 128; z > 0; z >>= 1) + for(z = 128; z > 0; z >>= 1) { strcat(b, ((x & z) == z) ? "1" : "0"); } @@ -40,137 +39,130 @@ const char *byte_to_binary(uint8_t x) return b; } -unsigned char Partab[] = { 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0 -,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1 -,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,}; +unsigned char Partab[] = { + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, + 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, + 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, + 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, + 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, + 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, +}; #define TRELLIS_TERMINATOR 0x0B -const static uint8_t fec_lut[16] = {0, 3, 1, 2, 3, 0, 2, 1, 3, 0, 2, 1, 0, 3, 1, 2}; - - +const static uint8_t fec_lut[16] = { 0, 3, 1, 2, 3, 0, 2, 1, 3, 0, 2, 1, 0, 3, 1, 2 }; void test_interleaver() { - uint8_t fecbuffer[4] = {0xFF,0x00,0xAB,0x00}; - uint8_t buffer[4]= {0,0,0,0}; - uint8_t buffer2[4]= {0,0,0,0}; - uint8_t *output = buffer; - uint8_t *input = buffer; - - *output++ = ((fecbuffer[0] & 0x03)) |\ - ((fecbuffer[1] & 0x03) << 2) |\ - ((fecbuffer[2] & 0x03) << 4) |\ - ((fecbuffer[3] & 0x03) << 6); - *output++ = (((fecbuffer[0] >> 2) & 0x03)) |\ - (((fecbuffer[1] >> 2) & 0x03) << 2) |\ - (((fecbuffer[2] >> 2) & 0x03) << 4) |\ - (((fecbuffer[3] >> 2) & 0x03) << 6); - *output++ = (((fecbuffer[0] >> 4) & 0x03)) |\ - (((fecbuffer[1] >> 4) & 0x03) << 2) |\ - (((fecbuffer[2] >> 4) & 0x03) << 4) |\ - (((fecbuffer[3] >> 4) & 0x03) << 6); - *output++ = (((fecbuffer[0] >> 6) & 0x03)) |\ - (((fecbuffer[1] >> 6) & 0x03) << 2) |\ - (((fecbuffer[2] >> 6) & 0x03) << 4) |\ - (((fecbuffer[3] >> 6) & 0x03) << 6); - - printf("Input : "); print_array((uint8_t*) fecbuffer, 4, BINARY); printf("\n"); - printf("Interl: "); print_array((uint8_t*) buffer, 4, BINARY); printf("\n"); - - fecbuffer[0] = ((input[0] & 0x03)) |\ - ((input[1] & 0x03) << 2) |\ - ((input[2] & 0x03) << 4) |\ - ((input[3] & 0x03) << 6); - fecbuffer[1] = (((input[0] >> 2) & 0x03)) |\ - (((input[1] >> 2) & 0x03) << 2) |\ - (((input[2] >> 2) & 0x03) << 4) |\ - (((input[3] >> 2) & 0x03) << 6); - fecbuffer[2] = (((input[0] >> 4) & 0x03)) |\ - (((input[1] >> 4) & 0x03) << 2) |\ - (((input[2] >> 4) & 0x03) << 4) |\ - (((input[3] >> 4) & 0x03) << 6); - fecbuffer[3] = (((input[0] >> 6) & 0x03)) |\ - (((input[1] >> 6) & 0x03) << 2) |\ - (((input[2] >> 6) & 0x03) << 4) |\ - (((input[3] >> 6) & 0x03) << 6); - - - printf("Deint : "); print_array((uint8_t*) fecbuffer, 4, BINARY); printf("\n"); - - + uint8_t fecbuffer[4] = { 0xFF, 0x00, 0xAB, 0x00 }; + uint8_t buffer[4] = { 0, 0, 0, 0 }; + uint8_t buffer2[4] = { 0, 0, 0, 0 }; + uint8_t* output = buffer; + uint8_t* input = buffer; + + *output++ = ((fecbuffer[0] & 0x03)) | ((fecbuffer[1] & 0x03) << 2) | ((fecbuffer[2] & 0x03) << 4) | ((fecbuffer[3] & 0x03) << 6); + *output++ = (((fecbuffer[0] >> 2) & 0x03)) | (((fecbuffer[1] >> 2) & 0x03) << 2) | (((fecbuffer[2] >> 2) & 0x03) << 4) + | (((fecbuffer[3] >> 2) & 0x03) << 6); + *output++ = (((fecbuffer[0] >> 4) & 0x03)) | (((fecbuffer[1] >> 4) & 0x03) << 2) | (((fecbuffer[2] >> 4) & 0x03) << 4) + | (((fecbuffer[3] >> 4) & 0x03) << 6); + *output++ = (((fecbuffer[0] >> 6) & 0x03)) | (((fecbuffer[1] >> 6) & 0x03) << 2) | (((fecbuffer[2] >> 6) & 0x03) << 4) + | (((fecbuffer[3] >> 6) & 0x03) << 6); + + printf("Input : "); + print_array((uint8_t*)fecbuffer, 4, BINARY); + printf("\n"); + printf("Interl: "); + print_array((uint8_t*)buffer, 4, BINARY); + printf("\n"); + + fecbuffer[0] = ((input[0] & 0x03)) | ((input[1] & 0x03) << 2) | ((input[2] & 0x03) << 4) | ((input[3] & 0x03) << 6); + fecbuffer[1] = (((input[0] >> 2) & 0x03)) | (((input[1] >> 2) & 0x03) << 2) | (((input[2] >> 2) & 0x03) << 4) | (((input[3] >> 2) & 0x03) << 6); + fecbuffer[2] = (((input[0] >> 4) & 0x03)) | (((input[1] >> 4) & 0x03) << 2) | (((input[2] >> 4) & 0x03) << 4) | (((input[3] >> 4) & 0x03) << 6); + fecbuffer[3] = (((input[0] >> 6) & 0x03)) | (((input[1] >> 6) & 0x03) << 2) | (((input[2] >> 6) & 0x03) << 4) | (((input[3] >> 6) & 0x03) << 6); + + printf("Deint : "); + print_array((uint8_t*)fecbuffer, 4, BINARY); + printf("\n"); } -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { - //test_interleaver(); - uint8_t input[] = {0x19,0x00,0x80,0x00,0x0B,0x57,0x00,0x00,0x07,0x8C,0x63,0x20,0x00,0x0B,0x57,0x00,0x00,0x07,0x8F,0x52,0x41,0x07,0x00,0x00,0xD0,0x81}; - uint8_t input_length = sizeof(input); - uint8_t encoded[255]; - uint8_t decoded[255]; - uint8_t errors[255]; - - memset(errors, 0, 255); - - - printf("Input: %d ", input_length); - print_array(input, input_length, BINARY); - printf("\n"); - - memcpy(encoded, input, input_length); - - uint16_t lenght_encoded = fec_encode(encoded, input_length); - - printf("Encoded: %d ", lenght_encoded); - print_array(encoded, lenght_encoded, BINARY); - printf("\n"); - - memcpy(decoded, encoded, lenght_encoded); - - - uint8_t length_decoded = fec_decode_packet(decoded, lenght_encoded, 255); - - printf("Decoded: %d ", length_decoded); - print_array(decoded, length_decoded, BINARY); - printf("\n"); - - int nr_errors = 1; - int notrecovered = 0; - srand(time(NULL)); - -// while (notrecovered < 1) -// { -// int r = rand() % (lenght_encoded * 8); -// //printf("Rand: %d\n", r); -// -// encoded[r/8] ^= 1 << r % 8; -// errors[r/8] ^= 1 << r % 8; -// printf("Errors %d - BER %d%%\n", nr_errors, (nr_errors * 100) / (lenght_encoded * 8)); -// printf("Error: "); -// print_array(errors, lenght_encoded); -// printf("\n"); -// printf("Enc. error: "); -// print_array(encoded, lenght_encoded); -// printf("\n"); -// -// length_decoded = fec_decode_packet(encoded, lenght_encoded, decoded, 255); -// -// printf("Decoded: "); -// print_array(decoded, length_decoded); -// printf("\n"); -// -// if (memcmp(input, decoded, input_length) == 0) -// { -// printf("ok\n"); -// } -// else -// { -// printf("error\n"); -// notrecovered++; -// } -// -// nr_errors++; -// } + // test_interleaver(); + uint8_t input[] = { 0x19, 0x00, 0x80, 0x00, 0x0B, 0x57, 0x00, 0x00, 0x07, 0x8C, 0x63, 0x20, 0x00, + 0x0B, 0x57, 0x00, 0x00, 0x07, 0x8F, 0x52, 0x41, 0x07, 0x00, 0x00, 0xD0, 0x81 }; + uint8_t input_length = sizeof(input); + uint8_t encoded[255]; + uint8_t decoded[255]; + uint8_t errors[255]; + + memset(errors, 0, 255); + + printf("Input: %d ", input_length); + print_array(input, input_length, BINARY); + printf("\n"); + + memcpy(encoded, input, input_length); + + uint16_t lenght_encoded = fec_encode(encoded, input_length); + + printf("Encoded: %d ", lenght_encoded); + print_array(encoded, lenght_encoded, BINARY); + printf("\n"); + + memcpy(decoded, encoded, lenght_encoded); + + uint8_t length_decoded = fec_decode_packet(decoded, lenght_encoded, 255); + + printf("Decoded: %d ", length_decoded); + print_array(decoded, length_decoded, BINARY); + printf("\n"); + + int nr_errors = 1; + int notrecovered = 0; + srand(time(NULL)); + + if(memcmp(input, decoded, input_length) == 0) + { + printf("Input was decoded successfully\n"); + } + else + { + printf("error\n"); + // notrecovered++; + } + // while (notrecovered < 1) + // { + // int r = rand() % (lenght_encoded * 8); + // //printf("Rand: %d\n", r); + // + // encoded[r/8] ^= 1 << r % 8; + // errors[r/8] ^= 1 << r % 8; + // printf("Errors %d - BER %d%%\n", nr_errors, (nr_errors * 100) / (lenght_encoded * 8)); + // printf("Error: "); + // print_array(errors, lenght_encoded); + // printf("\n"); + // printf("Enc. error: "); + // print_array(encoded, lenght_encoded); + // printf("\n"); + // + // length_decoded = fec_decode_packet(encoded, lenght_encoded, decoded, 255); + // + // printf("Decoded: "); + // print_array(decoded, length_decoded); + // printf("\n"); + // + // if (memcmp(input, decoded, input_length) == 0) + // { + // printf("ok\n"); + // } + // else + // { + // printf("error\n"); + // notrecovered++; + // } + // + // nr_errors++; + // } return 0; } diff --git a/stack/tests/fifo/main.c b/stack/tests/fifo/main.c index 04c06c202..32681091c 100644 --- a/stack/tests/fifo/main.c +++ b/stack/tests/fifo/main.c @@ -16,9 +16,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "fifo.h" #include "assert.h" #include "errors.h" +#include "fifo.h" #include "stdio.h" #define BUFFER_SIZE 10 @@ -26,15 +26,16 @@ void test_peek() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - uint8_t tmp[BUFFER_SIZE] = {0,}; - + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t tmp[BUFFER_SIZE] = { + 0, + }; fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); - for(int i=0; i < BUFFER_SIZE; i++) + for(int i = 0; i < BUFFER_SIZE; i++) { element = 10; assert(fifo_peek(&test_fifo, &element, i, 1) == SUCCESS); @@ -56,52 +57,56 @@ void test_peek() void test_pop() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - uint8_t expected[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - uint8_t buff[BUFFER_SIZE] = {0}; + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t expected[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t buff[BUFFER_SIZE] = { 0 }; // single element pop fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); - for(int i=0; i < BUFFER_SIZE; i++) + for(int i = 0; i < BUFFER_SIZE; i++) { element = 10; assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); assert(element == buffer[i]); assert(fifo_is_full(&test_fifo) == false); - // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( test_fifo.tail_idx)); + // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( + // test_fifo.tail_idx)); assert(fifo_get_size(&test_fifo) == 10 - i - 1); } assert(fifo_pop(&test_fifo, &element, 1) == ESIZE); - //pop multiple elements + // pop multiple elements fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); assert(fifo_pop(&test_fifo, buff, 9) == SUCCESS); assert(fifo_get_size(&test_fifo) == 1); - for(int i = 0; i < 9; i++){ + for(int i = 0; i < 9; i++) + { assert(expected[i] == buff[i]); } - + assert(fifo_pop(&test_fifo, buff, 2) == ESIZE); } void test_put() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = {0,}; - uint8_t expected[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = { + 0, + }; + uint8_t expected[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // test single element access fifo_init(&test_fifo, buffer, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == false); assert(fifo_get_size(&test_fifo) == 0); - for(int i=0; i < BUFFER_SIZE; i++) + for(int i = 0; i < BUFFER_SIZE; i++) { assert(fifo_put(&test_fifo, &expected[i], 1) == SUCCESS); assert(fifo_get_size(&test_fifo) == i + 1); @@ -116,25 +121,25 @@ void test_put() assert(fifo_put(&test_fifo, expected, 5) == SUCCESS); assert(fifo_get_size(&test_fifo) == 5); - for(int i = 0; i < 5; i++){ + for(int i = 0; i < 5; i++) + { assert(buffer[i] == expected[i]); } - - assert(fifo_put(&test_fifo, expected, 6) == ESIZE); + assert(fifo_put(&test_fifo, expected, 6) == ESIZE); } void test_circular() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); - uint8_t expected[BUFFER_SIZE] = {4,5,6,7,8,9,0,1,2,3}; - for(int i=0; i < 4; i++) + uint8_t expected[BUFFER_SIZE] = { 4, 5, 6, 7, 8, 9, 0, 1, 2, 3 }; + for(int i = 0; i < 4; i++) { element = 10; assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); @@ -142,7 +147,7 @@ void test_circular() assert(fifo_put(&test_fifo, &element, 1) == SUCCESS); assert(fifo_is_full(&test_fifo) == true); } - for(int i=0; i < BUFFER_SIZE; i++) + for(int i = 0; i < BUFFER_SIZE; i++) { assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); assert(fifo_get_size(&test_fifo) == 10 - i - 1); @@ -152,15 +157,16 @@ void test_circular() assert(fifo_put(&test_fifo, expected, 6) == SUCCESS); assert(fifo_get_size(&test_fifo) == 6); - uint8_t expected_new[6] = {4,5,6,7,8,9}; - uint8_t buff[6] = {0,}; + uint8_t expected_new[6] = { 4, 5, 6, 7, 8, 9 }; + uint8_t buff[6] = { + 0, + }; assert(fifo_pop(&test_fifo, buff, 6) == SUCCESS); assert(fifo_get_size(&test_fifo) == 0); - for(int i=0; i < 6; i++) + for(int i = 0; i < 6; i++) { assert(buff[i] == expected_new[i]); } - } void test_subview() @@ -168,38 +174,41 @@ void test_subview() fifo_t test_fifo; fifo_t subview; uint8_t element; - uint8_t buff[BUFFER_SIZE] = {0,}; - uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - + uint8_t buff[BUFFER_SIZE] = { + 0, + }; + uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_init_subview(&subview, &test_fifo, 0, 11) == ESIZE); assert(fifo_init_subview(&subview, &test_fifo, 3, 8) == ESIZE); - - uint8_t expected0[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t expected0[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; assert(fifo_init_subview(&subview, &test_fifo, 0, 10) == SUCCESS); assert(fifo_pop(&subview, buff, 10) == SUCCESS); - for(int i=0; i < 10; i++){ + for(int i = 0; i < 10; i++) + { assert(buff[i] == expected0[i]); } assert(fifo_pop(&subview, buff, 1) == ESIZE); - uint8_t expected1[BUFFER_SIZE] = {3,4,5,6,7}; + uint8_t expected1[BUFFER_SIZE] = { 3, 4, 5, 6, 7 }; assert(fifo_init_subview(&subview, &test_fifo, 3, 5) == SUCCESS); assert(fifo_pop(&subview, buff, 5) == SUCCESS); - for(int i=0; i < 5; i++){ + for(int i = 0; i < 5; i++) + { assert(buff[i] == expected1[i]); } - fifo_pop(&test_fifo, buff, 9); //test_fifo = {9} - fifo_put(&test_fifo, expected1, 5); //test_fifo = {9,3,4,5,6,7} - uint8_t expected2[BUFFER_SIZE] = {5,6,7}; + fifo_pop(&test_fifo, buff, 9); // test_fifo = {9} + fifo_put(&test_fifo, expected1, 5); // test_fifo = {9,3,4,5,6,7} + uint8_t expected2[BUFFER_SIZE] = { 5, 6, 7 }; assert(fifo_init_subview(&subview, &test_fifo, 3, 3) == SUCCESS); assert(fifo_pop(&subview, buff, 3) == SUCCESS); - for(int i=0; i < 3; i++){ + for(int i = 0; i < 3; i++) + { assert(buff[i] == expected2[i]); } - } void test_remove_last_byte() @@ -207,45 +216,44 @@ void test_remove_last_byte() fifo_t test_fifo; fifo_t subview; uint8_t element; - uint8_t buff[BUFFER_SIZE] = {0,}; - uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t buff[BUFFER_SIZE] = { + 0, + }; + uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); - uint8_t expected0[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8}; + uint8_t expected0[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; fifo_init_subview(&subview, &test_fifo, 0, 10); assert(fifo_remove_last_byte(&subview) == SUCCESS); - // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( test_fifo.tail_idx)); + // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( + // test_fifo.tail_idx)); assert(fifo_get_size(&subview) == 9); - for(int i=0; i < 9; i++) + for(int i = 0; i < 9; i++) { assert(fifo_pop(&subview, &element, 1) == SUCCESS); assert(expected0[i] == element); } assert(fifo_remove_last_byte(&subview) == ESIZE); - uint8_t expected1[BUFFER_SIZE] = {6,7,8,9,2,3,4}; - assert(fifo_pop(&test_fifo, buff, 6) == SUCCESS); //{6,7,8,9} + uint8_t expected1[BUFFER_SIZE] = { 6, 7, 8, 9, 2, 3, 4 }; + assert(fifo_pop(&test_fifo, buff, 6) == SUCCESS); //{6,7,8,9} assert(fifo_put(&test_fifo, &buff[2], 4) == SUCCESS); //{6,7,8,9,2,3,4,5} assert(fifo_remove_last_byte(&test_fifo) == SUCCESS); assert(fifo_get_size(&test_fifo) == 7); - for(int i=0; i < 7; i++) + for(int i = 0; i < 7; i++) { assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); assert(expected1[i] == element); } - - - } void test_pop_empty() { fifo_t test_fifo; - uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - uint8_t expected[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; - uint8_t buff[BUFFER_SIZE] = {0}; + uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t expected[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t buff[BUFFER_SIZE] = { 0 }; // single element pop fifo_init(&test_fifo, buffer, BUFFER_SIZE); @@ -254,7 +262,7 @@ void test_pop_empty() assert(fifo_get_size(&test_fifo) == 0); } -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { printf("Testing fifo_peek ... "); test_peek(); @@ -284,4 +292,5 @@ int main(int argc, char *argv[]) test_pop_empty(); printf("Success!\n"); + printf("All FIFO tests passed!\n"); } From c6ae43d51f7d1a25edf9a903072cdddd4e80e639 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Tue, 19 Apr 2022 17:17:44 +0200 Subject: [PATCH 03/20] Forgot to add the CI yml --- .github/workflows/github-ci.yml | 106 ++++++++++++++++++++++++++++---- 1 file changed, 94 insertions(+), 12 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 19c9d583f..bb4b99f0d 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -1,23 +1,105 @@ -name: C/C++ CI +name: Sub-IoT-Stack CI on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: - build: + run-unit-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: configure - run: ./configure - - name: make - run: make - - name: make check - run: make check - - name: make distcheck - run: make distcheck + + - name: Build stack natively + run: | + mkdir build && cd build + platform="NATIVE" + cmake ../stack/ -DPLATFORM=$platform -DCMAKE_TOOLCHAIN_FILE="../stack/cmake/toolchains/gcc.cmake" -DBUILD_UNIT_TESTS=y -DFRAMEWORK_CONSOLE_ENABLED=n -DTEST_AES=y -DTEST_FEC=y -DTEST_ALP=y -DTEST_FIFO=y -DMODULE_D7AP=n -DMODULE_ALP_SERIAL_INTERFACE_ENABLED=n + make -j + + - name: Run unit tests + run: | + ./build/tests/aes/test_aes &> results_aes.txt + ./build/tests/alp/test_alp &> results_alp.txt + ./build/tests/fec/test_fec &> results_fec.txt + ./build/tests/fifo/test_fifo &> results_fifo.txt + + - name: Upload the results + uses: actions/upload-artifact@v2 + with: + name: results + path: | + results_aes + results_alp.txt + results_fec.txt + results_fifo.txt + + - name: Handle results + run: | + if ! grep -q 'AES all unit tests OK !' "results_aes.txt"; then exit 1; fi + if ! grep -q 'Unit-tests for ALP completed' "results_alp.txt"; then exit 1; fi + if ! grep -q 'Input was decoded successfully' "results_fec.txt"; then exit 1; fi + if ! grep -q 'All FIFO tests passed!' "results_fifo.txt"; then exit 1; fi + + run-testsuite: + + runs-on: self-hosted + + steps: + - uses: actions/checkout@v3 + + - name: Set up compiler + uses: fiam/arm-none-eabi-gcc@v1 + with: + release: '8-2018-q4' + + - name: Build stack + run: | + mkdir build && cd build + platform="B_L072Z_LRWAN1" + cmake ../stack/ -DAPP_GATEWAY=y -DAPP_MODEM=y -DAPP_SENSOR_PUSH=y -DPLATFORM=$platform -DFRAMEWORK_DEBUG_ASSERT_REBOOT=y -DMODULE_D7AP_FS_DISABLE_PERMISSIONS=y -DAPP_MODEM_FORWARD_ALP_OVER_SERIAL=y + make -j + cd .. + + - name: Upload the builds + uses: actions/upload-artifact@v2 + with: + name: build + path: | + build/apps/gateway/ + build/apps/modem/ + build/apps/sensor_push/ + + - name: Flash builds to devices + run: | + cd build/apps/modem + JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt + JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt + cat flashOutput1.txt + cat flashOutput2.txt + if grep -q 'FAILED\|ERROR' "flashOutput1.txt"; then exit 1; fi + if grep -q 'FAILED\|ERROR' "flashOutput2.txt"; then exit 1; fi + + - name: Run testsuite + run: | + rm -rf Sub-IoT-testsuite + git clone --recurse-submodules https://github.com/Sub-IoT/Sub-IoT-testsuite.git + cd Sub-IoT-testsuite + pip install -r requirements.txt + cd lib/pyd7a/ + pip install -r requirements.txt + cd ../.. + python2 run.py --serial-test-device=/dev/ttyUSB0 --serial-dut=/dev/ttyUSB1 -m "not band433 and not band915 and not known_issue" --junitxml report.xml -v + + - name: Upload test results + uses: actions/upload-artifact@v2 + with: + name: test-results + path: Sub-IoT-testsuite/report.xml + + + \ No newline at end of file From dd27ee85a0adaa544aee50124fdb7c5f90ee9130 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Tue, 19 Apr 2022 17:27:51 +0200 Subject: [PATCH 04/20] give names to jobs --- .github/workflows/github-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index bb4b99f0d..ccf4aedab 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -1,4 +1,4 @@ -name: Sub-IoT-Stack CI +name: C/C++ CI on: push: @@ -9,6 +9,7 @@ on: jobs: run-unit-tests: + name: Run Unit Tests runs-on: ubuntu-latest steps: @@ -46,7 +47,7 @@ jobs: if ! grep -q 'All FIFO tests passed!' "results_fifo.txt"; then exit 1; fi run-testsuite: - + name: Run Testsuite runs-on: self-hosted steps: From 4514c625001232fd54c09882a659d4d700f06f7e Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Tue, 19 Apr 2022 17:30:36 +0200 Subject: [PATCH 05/20] primary branch is master, not main --- .github/workflows/github-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index ccf4aedab..8254b709c 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -1,10 +1,10 @@ -name: C/C++ CI +name: Sub-IoT-Stack CI on: push: - branches: [ main ] + branches: [ master ] pull_request: - branches: [ main ] + branches: [ master ] jobs: From 5beda1074e5eb3bb9bd41b09fa20ec3ae06a7735 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Tue, 19 Apr 2022 17:59:27 +0200 Subject: [PATCH 06/20] missing .txt for one output file --- .github/workflows/github-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 8254b709c..dd78f82b1 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -34,7 +34,7 @@ jobs: with: name: results path: | - results_aes + results_aes.txt results_alp.txt results_fec.txt results_fifo.txt From 3ba53324d590478c23765703fcaefea937df2033 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Wed, 20 Apr 2022 10:45:50 +0200 Subject: [PATCH 07/20] don't apply clang-formatter at this time --- stack/tests/fec/main.c | 223 +++++++++++++++++++++------------------- stack/tests/fifo/main.c | 131 +++++++++++------------ 2 files changed, 182 insertions(+), 172 deletions(-) diff --git a/stack/tests/fec/main.c b/stack/tests/fec/main.c index 6f03658db..35991b115 100644 --- a/stack/tests/fec/main.c +++ b/stack/tests/fec/main.c @@ -16,22 +16,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "fec.h" -#include #include -#include +#include #include #include +#include +#include "fec.h" #define BINARY 0 -const char* byte_to_binary(uint8_t x) + +const char *byte_to_binary(uint8_t x) { static char b[9]; b[0] = '\0'; uint8_t z; - for(z = 128; z > 0; z >>= 1) + for (z = 128; z > 0; z >>= 1) { strcat(b, ((x & z) == z) ? "1" : "0"); } @@ -39,130 +40,146 @@ const char* byte_to_binary(uint8_t x) return b; } -unsigned char Partab[] = { - 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, - 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, - 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, - 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, - 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, -}; +unsigned char Partab[] = { 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0 +,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1 +,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,}; #define TRELLIS_TERMINATOR 0x0B -const static uint8_t fec_lut[16] = { 0, 3, 1, 2, 3, 0, 2, 1, 3, 0, 2, 1, 0, 3, 1, 2 }; +const static uint8_t fec_lut[16] = {0, 3, 1, 2, 3, 0, 2, 1, 3, 0, 2, 1, 0, 3, 1, 2}; + + void test_interleaver() { - uint8_t fecbuffer[4] = { 0xFF, 0x00, 0xAB, 0x00 }; - uint8_t buffer[4] = { 0, 0, 0, 0 }; - uint8_t buffer2[4] = { 0, 0, 0, 0 }; - uint8_t* output = buffer; - uint8_t* input = buffer; - - *output++ = ((fecbuffer[0] & 0x03)) | ((fecbuffer[1] & 0x03) << 2) | ((fecbuffer[2] & 0x03) << 4) | ((fecbuffer[3] & 0x03) << 6); - *output++ = (((fecbuffer[0] >> 2) & 0x03)) | (((fecbuffer[1] >> 2) & 0x03) << 2) | (((fecbuffer[2] >> 2) & 0x03) << 4) - | (((fecbuffer[3] >> 2) & 0x03) << 6); - *output++ = (((fecbuffer[0] >> 4) & 0x03)) | (((fecbuffer[1] >> 4) & 0x03) << 2) | (((fecbuffer[2] >> 4) & 0x03) << 4) - | (((fecbuffer[3] >> 4) & 0x03) << 6); - *output++ = (((fecbuffer[0] >> 6) & 0x03)) | (((fecbuffer[1] >> 6) & 0x03) << 2) | (((fecbuffer[2] >> 6) & 0x03) << 4) - | (((fecbuffer[3] >> 6) & 0x03) << 6); - - printf("Input : "); - print_array((uint8_t*)fecbuffer, 4, BINARY); - printf("\n"); - printf("Interl: "); - print_array((uint8_t*)buffer, 4, BINARY); - printf("\n"); - - fecbuffer[0] = ((input[0] & 0x03)) | ((input[1] & 0x03) << 2) | ((input[2] & 0x03) << 4) | ((input[3] & 0x03) << 6); - fecbuffer[1] = (((input[0] >> 2) & 0x03)) | (((input[1] >> 2) & 0x03) << 2) | (((input[2] >> 2) & 0x03) << 4) | (((input[3] >> 2) & 0x03) << 6); - fecbuffer[2] = (((input[0] >> 4) & 0x03)) | (((input[1] >> 4) & 0x03) << 2) | (((input[2] >> 4) & 0x03) << 4) | (((input[3] >> 4) & 0x03) << 6); - fecbuffer[3] = (((input[0] >> 6) & 0x03)) | (((input[1] >> 6) & 0x03) << 2) | (((input[2] >> 6) & 0x03) << 4) | (((input[3] >> 6) & 0x03) << 6); - - printf("Deint : "); - print_array((uint8_t*)fecbuffer, 4, BINARY); - printf("\n"); + uint8_t fecbuffer[4] = {0xFF,0x00,0xAB,0x00}; + uint8_t buffer[4]= {0,0,0,0}; + uint8_t buffer2[4]= {0,0,0,0}; + uint8_t *output = buffer; + uint8_t *input = buffer; + + *output++ = ((fecbuffer[0] & 0x03)) |\ + ((fecbuffer[1] & 0x03) << 2) |\ + ((fecbuffer[2] & 0x03) << 4) |\ + ((fecbuffer[3] & 0x03) << 6); + *output++ = (((fecbuffer[0] >> 2) & 0x03)) |\ + (((fecbuffer[1] >> 2) & 0x03) << 2) |\ + (((fecbuffer[2] >> 2) & 0x03) << 4) |\ + (((fecbuffer[3] >> 2) & 0x03) << 6); + *output++ = (((fecbuffer[0] >> 4) & 0x03)) |\ + (((fecbuffer[1] >> 4) & 0x03) << 2) |\ + (((fecbuffer[2] >> 4) & 0x03) << 4) |\ + (((fecbuffer[3] >> 4) & 0x03) << 6); + *output++ = (((fecbuffer[0] >> 6) & 0x03)) |\ + (((fecbuffer[1] >> 6) & 0x03) << 2) |\ + (((fecbuffer[2] >> 6) & 0x03) << 4) |\ + (((fecbuffer[3] >> 6) & 0x03) << 6); + + printf("Input : "); print_array((uint8_t*) fecbuffer, 4, BINARY); printf("\n"); + printf("Interl: "); print_array((uint8_t*) buffer, 4, BINARY); printf("\n"); + + fecbuffer[0] = ((input[0] & 0x03)) |\ + ((input[1] & 0x03) << 2) |\ + ((input[2] & 0x03) << 4) |\ + ((input[3] & 0x03) << 6); + fecbuffer[1] = (((input[0] >> 2) & 0x03)) |\ + (((input[1] >> 2) & 0x03) << 2) |\ + (((input[2] >> 2) & 0x03) << 4) |\ + (((input[3] >> 2) & 0x03) << 6); + fecbuffer[2] = (((input[0] >> 4) & 0x03)) |\ + (((input[1] >> 4) & 0x03) << 2) |\ + (((input[2] >> 4) & 0x03) << 4) |\ + (((input[3] >> 4) & 0x03) << 6); + fecbuffer[3] = (((input[0] >> 6) & 0x03)) |\ + (((input[1] >> 6) & 0x03) << 2) |\ + (((input[2] >> 6) & 0x03) << 4) |\ + (((input[3] >> 6) & 0x03) << 6); + + + printf("Deint : "); print_array((uint8_t*) fecbuffer, 4, BINARY); printf("\n"); + + } -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - // test_interleaver(); - uint8_t input[] = { 0x19, 0x00, 0x80, 0x00, 0x0B, 0x57, 0x00, 0x00, 0x07, 0x8C, 0x63, 0x20, 0x00, - 0x0B, 0x57, 0x00, 0x00, 0x07, 0x8F, 0x52, 0x41, 0x07, 0x00, 0x00, 0xD0, 0x81 }; - uint8_t input_length = sizeof(input); - uint8_t encoded[255]; - uint8_t decoded[255]; - uint8_t errors[255]; + //test_interleaver(); + uint8_t input[] = {0x19,0x00,0x80,0x00,0x0B,0x57,0x00,0x00,0x07,0x8C,0x63,0x20,0x00,0x0B,0x57,0x00,0x00,0x07,0x8F,0x52,0x41,0x07,0x00,0x00,0xD0,0x81}; + uint8_t input_length = sizeof(input); + uint8_t encoded[255]; + uint8_t decoded[255]; + uint8_t errors[255]; - memset(errors, 0, 255); + memset(errors, 0, 255); - printf("Input: %d ", input_length); - print_array(input, input_length, BINARY); - printf("\n"); - memcpy(encoded, input, input_length); + printf("Input: %d ", input_length); + print_array(input, input_length, BINARY); + printf("\n"); - uint16_t lenght_encoded = fec_encode(encoded, input_length); + memcpy(encoded, input, input_length); - printf("Encoded: %d ", lenght_encoded); - print_array(encoded, lenght_encoded, BINARY); - printf("\n"); + uint16_t lenght_encoded = fec_encode(encoded, input_length); - memcpy(decoded, encoded, lenght_encoded); + printf("Encoded: %d ", lenght_encoded); + print_array(encoded, lenght_encoded, BINARY); + printf("\n"); - uint8_t length_decoded = fec_decode_packet(decoded, lenght_encoded, 255); + memcpy(decoded, encoded, lenght_encoded); - printf("Decoded: %d ", length_decoded); - print_array(decoded, length_decoded, BINARY); - printf("\n"); - int nr_errors = 1; - int notrecovered = 0; - srand(time(NULL)); + uint8_t length_decoded = fec_decode_packet(decoded, lenght_encoded, 255); - if(memcmp(input, decoded, input_length) == 0) + printf("Decoded: %d ", length_decoded); + print_array(decoded, length_decoded, BINARY); + printf("\n"); + + int nr_errors = 1; + int notrecovered = 0; + srand(time(NULL)); + + if(memcmp(input, decoded, input_length) == 0) { printf("Input was decoded successfully\n"); } else { printf("error\n"); - // notrecovered++; } - // while (notrecovered < 1) - // { - // int r = rand() % (lenght_encoded * 8); - // //printf("Rand: %d\n", r); - // - // encoded[r/8] ^= 1 << r % 8; - // errors[r/8] ^= 1 << r % 8; - // printf("Errors %d - BER %d%%\n", nr_errors, (nr_errors * 100) / (lenght_encoded * 8)); - // printf("Error: "); - // print_array(errors, lenght_encoded); - // printf("\n"); - // printf("Enc. error: "); - // print_array(encoded, lenght_encoded); - // printf("\n"); - // - // length_decoded = fec_decode_packet(encoded, lenght_encoded, decoded, 255); - // - // printf("Decoded: "); - // print_array(decoded, length_decoded); - // printf("\n"); - // - // if (memcmp(input, decoded, input_length) == 0) - // { - // printf("ok\n"); - // } - // else - // { - // printf("error\n"); - // notrecovered++; - // } - // - // nr_errors++; - // } +// while (notrecovered < 1) +// { +// int r = rand() % (lenght_encoded * 8); +// //printf("Rand: %d\n", r); +// +// encoded[r/8] ^= 1 << r % 8; +// errors[r/8] ^= 1 << r % 8; +// printf("Errors %d - BER %d%%\n", nr_errors, (nr_errors * 100) / (lenght_encoded * 8)); +// printf("Error: "); +// print_array(errors, lenght_encoded); +// printf("\n"); +// printf("Enc. error: "); +// print_array(encoded, lenght_encoded); +// printf("\n"); +// +// length_decoded = fec_decode_packet(encoded, lenght_encoded, decoded, 255); +// +// printf("Decoded: "); +// print_array(decoded, length_decoded); +// printf("\n"); +// +// if (memcmp(input, decoded, input_length) == 0) +// { +// printf("ok\n"); +// } +// else +// { +// printf("error\n"); +// notrecovered++; +// } +// +// nr_errors++; +// } + return 0; } diff --git a/stack/tests/fifo/main.c b/stack/tests/fifo/main.c index 32681091c..95cbd535f 100644 --- a/stack/tests/fifo/main.c +++ b/stack/tests/fifo/main.c @@ -16,9 +16,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include "fifo.h" #include "assert.h" #include "errors.h" -#include "fifo.h" #include "stdio.h" #define BUFFER_SIZE 10 @@ -26,16 +26,15 @@ void test_peek() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - uint8_t tmp[BUFFER_SIZE] = { - 0, - }; + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t tmp[BUFFER_SIZE] = {0,}; + fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); - for(int i = 0; i < BUFFER_SIZE; i++) + for(int i=0; i < BUFFER_SIZE; i++) { element = 10; assert(fifo_peek(&test_fifo, &element, i, 1) == SUCCESS); @@ -57,56 +56,52 @@ void test_peek() void test_pop() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - uint8_t expected[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - uint8_t buff[BUFFER_SIZE] = { 0 }; + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t expected[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t buff[BUFFER_SIZE] = {0}; // single element pop fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); - for(int i = 0; i < BUFFER_SIZE; i++) + for(int i=0; i < BUFFER_SIZE; i++) { element = 10; assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); assert(element == buffer[i]); assert(fifo_is_full(&test_fifo) == false); - // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( - // test_fifo.tail_idx)); + // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( test_fifo.tail_idx)); assert(fifo_get_size(&test_fifo) == 10 - i - 1); } assert(fifo_pop(&test_fifo, &element, 1) == ESIZE); - // pop multiple elements + //pop multiple elements fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); assert(fifo_pop(&test_fifo, buff, 9) == SUCCESS); assert(fifo_get_size(&test_fifo) == 1); - for(int i = 0; i < 9; i++) - { + for(int i = 0; i < 9; i++){ assert(expected[i] == buff[i]); } - + assert(fifo_pop(&test_fifo, buff, 2) == ESIZE); } void test_put() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = { - 0, - }; - uint8_t expected[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = {0,}; + uint8_t expected[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; // test single element access fifo_init(&test_fifo, buffer, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == false); assert(fifo_get_size(&test_fifo) == 0); - for(int i = 0; i < BUFFER_SIZE; i++) + for(int i=0; i < BUFFER_SIZE; i++) { assert(fifo_put(&test_fifo, &expected[i], 1) == SUCCESS); assert(fifo_get_size(&test_fifo) == i + 1); @@ -121,25 +116,25 @@ void test_put() assert(fifo_put(&test_fifo, expected, 5) == SUCCESS); assert(fifo_get_size(&test_fifo) == 5); - for(int i = 0; i < 5; i++) - { + for(int i = 0; i < 5; i++){ assert(buffer[i] == expected[i]); } - + assert(fifo_put(&test_fifo, expected, 6) == ESIZE); + } void test_circular() { fifo_t test_fifo; - uint8_t element; - uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - + uint8_t element; + uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_is_full(&test_fifo) == true); - uint8_t expected[BUFFER_SIZE] = { 4, 5, 6, 7, 8, 9, 0, 1, 2, 3 }; - for(int i = 0; i < 4; i++) + uint8_t expected[BUFFER_SIZE] = {4,5,6,7,8,9,0,1,2,3}; + for(int i=0; i < 4; i++) { element = 10; assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); @@ -147,7 +142,7 @@ void test_circular() assert(fifo_put(&test_fifo, &element, 1) == SUCCESS); assert(fifo_is_full(&test_fifo) == true); } - for(int i = 0; i < BUFFER_SIZE; i++) + for(int i=0; i < BUFFER_SIZE; i++) { assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); assert(fifo_get_size(&test_fifo) == 10 - i - 1); @@ -157,16 +152,15 @@ void test_circular() assert(fifo_put(&test_fifo, expected, 6) == SUCCESS); assert(fifo_get_size(&test_fifo) == 6); - uint8_t expected_new[6] = { 4, 5, 6, 7, 8, 9 }; - uint8_t buff[6] = { - 0, - }; + uint8_t expected_new[6] = {4,5,6,7,8,9}; + uint8_t buff[6] = {0,}; assert(fifo_pop(&test_fifo, buff, 6) == SUCCESS); assert(fifo_get_size(&test_fifo) == 0); - for(int i = 0; i < 6; i++) + for(int i=0; i < 6; i++) { assert(buff[i] == expected_new[i]); } + } void test_subview() @@ -174,41 +168,38 @@ void test_subview() fifo_t test_fifo; fifo_t subview; uint8_t element; - uint8_t buff[BUFFER_SIZE] = { - 0, - }; - uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - + uint8_t buff[BUFFER_SIZE] = {0,}; + uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); assert(fifo_init_subview(&subview, &test_fifo, 0, 11) == ESIZE); assert(fifo_init_subview(&subview, &test_fifo, 3, 8) == ESIZE); + - uint8_t expected0[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t expected0[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; assert(fifo_init_subview(&subview, &test_fifo, 0, 10) == SUCCESS); assert(fifo_pop(&subview, buff, 10) == SUCCESS); - for(int i = 0; i < 10; i++) - { + for(int i=0; i < 10; i++){ assert(buff[i] == expected0[i]); } assert(fifo_pop(&subview, buff, 1) == ESIZE); - uint8_t expected1[BUFFER_SIZE] = { 3, 4, 5, 6, 7 }; + uint8_t expected1[BUFFER_SIZE] = {3,4,5,6,7}; assert(fifo_init_subview(&subview, &test_fifo, 3, 5) == SUCCESS); assert(fifo_pop(&subview, buff, 5) == SUCCESS); - for(int i = 0; i < 5; i++) - { + for(int i=0; i < 5; i++){ assert(buff[i] == expected1[i]); } - fifo_pop(&test_fifo, buff, 9); // test_fifo = {9} - fifo_put(&test_fifo, expected1, 5); // test_fifo = {9,3,4,5,6,7} - uint8_t expected2[BUFFER_SIZE] = { 5, 6, 7 }; + fifo_pop(&test_fifo, buff, 9); //test_fifo = {9} + fifo_put(&test_fifo, expected1, 5); //test_fifo = {9,3,4,5,6,7} + uint8_t expected2[BUFFER_SIZE] = {5,6,7}; assert(fifo_init_subview(&subview, &test_fifo, 3, 3) == SUCCESS); assert(fifo_pop(&subview, buff, 3) == SUCCESS); - for(int i = 0; i < 3; i++) - { + for(int i=0; i < 3; i++){ assert(buff[i] == expected2[i]); } + } void test_remove_last_byte() @@ -216,44 +207,45 @@ void test_remove_last_byte() fifo_t test_fifo; fifo_t subview; uint8_t element; - uint8_t buff[BUFFER_SIZE] = { - 0, - }; - uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + uint8_t buff[BUFFER_SIZE] = {0,}; + uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + fifo_init_filled(&test_fifo, buffer, BUFFER_SIZE, BUFFER_SIZE); - uint8_t expected0[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + uint8_t expected0[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8}; fifo_init_subview(&subview, &test_fifo, 0, 10); assert(fifo_remove_last_byte(&subview) == SUCCESS); - // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( - // test_fifo.tail_idx)); + // printf("size: %d, full: %d, head: %d, tail: %d \n", fifo_get_size(&test_fifo), fifo_is_full(&test_fifo), (test_fifo.head_idx), ( test_fifo.tail_idx)); assert(fifo_get_size(&subview) == 9); - for(int i = 0; i < 9; i++) + for(int i=0; i < 9; i++) { assert(fifo_pop(&subview, &element, 1) == SUCCESS); assert(expected0[i] == element); } assert(fifo_remove_last_byte(&subview) == ESIZE); - uint8_t expected1[BUFFER_SIZE] = { 6, 7, 8, 9, 2, 3, 4 }; - assert(fifo_pop(&test_fifo, buff, 6) == SUCCESS); //{6,7,8,9} + uint8_t expected1[BUFFER_SIZE] = {6,7,8,9,2,3,4}; + assert(fifo_pop(&test_fifo, buff, 6) == SUCCESS); //{6,7,8,9} assert(fifo_put(&test_fifo, &buff[2], 4) == SUCCESS); //{6,7,8,9,2,3,4,5} assert(fifo_remove_last_byte(&test_fifo) == SUCCESS); assert(fifo_get_size(&test_fifo) == 7); - for(int i = 0; i < 7; i++) + for(int i=0; i < 7; i++) { assert(fifo_pop(&test_fifo, &element, 1) == SUCCESS); assert(expected1[i] == element); } + + + } void test_pop_empty() { fifo_t test_fifo; - uint8_t buffer[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - uint8_t expected[BUFFER_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - uint8_t buff[BUFFER_SIZE] = { 0 }; + uint8_t buffer[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t expected[BUFFER_SIZE] = {0,1,2,3,4,5,6,7,8,9}; + uint8_t buff[BUFFER_SIZE] = {0}; // single element pop fifo_init(&test_fifo, buffer, BUFFER_SIZE); @@ -262,7 +254,7 @@ void test_pop_empty() assert(fifo_get_size(&test_fifo) == 0); } -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { printf("Testing fifo_peek ... "); test_peek(); @@ -293,4 +285,5 @@ int main(int argc, char* argv[]) printf("Success!\n"); printf("All FIFO tests passed!\n"); + } From 2cb51b960b9a89c48e77da7f4476074daf3d9e02 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 09:42:51 +0200 Subject: [PATCH 08/20] moving building stage to run on ubuntu-latest --- .github/workflows/github-ci.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index dd78f82b1..700e394ba 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -46,9 +46,9 @@ jobs: if ! grep -q 'Input was decoded successfully' "results_fec.txt"; then exit 1; fi if ! grep -q 'All FIFO tests passed!' "results_fifo.txt"; then exit 1; fi - run-testsuite: - name: Run Testsuite - runs-on: self-hosted + generate-builds: + name: Generate Builds + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -75,6 +75,17 @@ jobs: build/apps/modem/ build/apps/sensor_push/ + run-testsuite: + name: Run Testsuite + runs-on: self-hosted + needs: generate-builds + + steps: + + - uses: actions/download-artifact@v3 + with: + name: build/apps/modem/ + - name: Flash builds to devices run: | cd build/apps/modem From fc2eabe9003602e6460b6c0ffe2cbcd27c6fd8c5 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 09:50:02 +0200 Subject: [PATCH 09/20] download all --- .github/workflows/github-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 700e394ba..0d85b404e 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -83,8 +83,6 @@ jobs: steps: - uses: actions/download-artifact@v3 - with: - name: build/apps/modem/ - name: Flash builds to devices run: | From 5a4b69c3d3814bf4007ef6662ff28881ffb118cc Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 10:22:18 +0200 Subject: [PATCH 10/20] test secret var --- .github/workflows/github-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 0d85b404e..6c6f144bc 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -81,11 +81,12 @@ jobs: needs: generate-builds steps: - - uses: actions/download-artifact@v3 - name: Flash builds to devices run: | + echo %TESTSUITE_RUNNING_STATUS_LOC + cat %TESTSUITE_RUNNING_STATUS_LOC cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt From 50fc9490cf2793a51d0ffe339fe3a66ecd48eb3d Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 10:30:31 +0200 Subject: [PATCH 11/20] access secret correctly --- .github/workflows/github-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 6c6f144bc..67f0d53b1 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -84,9 +84,11 @@ jobs: - uses: actions/download-artifact@v3 - name: Flash builds to devices + env: + TESTSUITE_RUNNING_STATUS_LOC: ${{ secrets.TESTSUITE_RUNNING_STATUS_LOC }} run: | - echo %TESTSUITE_RUNNING_STATUS_LOC - cat %TESTSUITE_RUNNING_STATUS_LOC + echo $TESTSUITE_RUNNING_STATUS_LOC + cat $TESTSUITE_RUNNING_STATUS_LOC cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt From 3ae320f61acd4b3d4343d5b167a6ac53dfed3d5b Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 11:15:10 +0200 Subject: [PATCH 12/20] check secret var to decide whether to run testsuite or not. --- .github/workflows/github-ci.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 67f0d53b1..ecc810589 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -79,6 +79,8 @@ jobs: name: Run Testsuite runs-on: self-hosted needs: generate-builds + env: + TESTSUITE_STATUS_CHANGED_DURING_RUN: false steps: - uses: actions/download-artifact@v3 @@ -87,8 +89,9 @@ jobs: env: TESTSUITE_RUNNING_STATUS_LOC: ${{ secrets.TESTSUITE_RUNNING_STATUS_LOC }} run: | - echo $TESTSUITE_RUNNING_STATUS_LOC - cat $TESTSUITE_RUNNING_STATUS_LOC + if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi + echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC + echo true >> $TESTSUITE_STATUS_CHANGED_DURING_RUN cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt @@ -107,6 +110,7 @@ jobs: pip install -r requirements.txt cd ../.. python2 run.py --serial-test-device=/dev/ttyUSB0 --serial-dut=/dev/ttyUSB1 -m "not band433 and not band915 and not known_issue" --junitxml report.xml -v + echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC - name: Upload test results uses: actions/upload-artifact@v2 @@ -114,5 +118,11 @@ jobs: name: test-results path: Sub-IoT-testsuite/report.xml + - name: Reset atomic on failure of previous steps + if: always() + run: | + if [ $TESTSUITE_STATUS_CHANGED_DURING_RUN = true ] ; then echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC ; fi + + \ No newline at end of file From 9560246ae8842292436dc1ae202058c9babec41f Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 11:27:09 +0200 Subject: [PATCH 13/20] move env var up scope so all steps in run-testsuite can access --- .github/workflows/github-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index ecc810589..3218e8d96 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -81,13 +81,12 @@ jobs: needs: generate-builds env: TESTSUITE_STATUS_CHANGED_DURING_RUN: false + TESTSUITE_RUNNING_STATUS_LOC: ${{ secrets.TESTSUITE_RUNNING_STATUS_LOC }} steps: - uses: actions/download-artifact@v3 - name: Flash builds to devices - env: - TESTSUITE_RUNNING_STATUS_LOC: ${{ secrets.TESTSUITE_RUNNING_STATUS_LOC }} run: | if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC From 03e2058f71de45edbecd1b3f6bce00c9f2f494f2 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 11:40:25 +0200 Subject: [PATCH 14/20] testing setting of env var --- .github/workflows/github-ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 3218e8d96..cd8ff274f 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -80,7 +80,7 @@ jobs: runs-on: self-hosted needs: generate-builds env: - TESTSUITE_STATUS_CHANGED_DURING_RUN: false + TESTSUITE_STATUS_CHANGED_DURING_RUN: "false" TESTSUITE_RUNNING_STATUS_LOC: ${{ secrets.TESTSUITE_RUNNING_STATUS_LOC }} steps: @@ -90,7 +90,8 @@ jobs: run: | if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC - echo true >> $TESTSUITE_STATUS_CHANGED_DURING_RUN + echo "true" >> $TESTSUITE_STATUS_CHANGED_DURING_RUN + echo $TESTSUITE_STATUS_CHANGED_DURING_RUN cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt @@ -101,6 +102,7 @@ jobs: - name: Run testsuite run: | + echo $TESTSUITE_STATUS_CHANGED_DURING_RUN rm -rf Sub-IoT-testsuite git clone --recurse-submodules https://github.com/Sub-IoT/Sub-IoT-testsuite.git cd Sub-IoT-testsuite @@ -120,6 +122,7 @@ jobs: - name: Reset atomic on failure of previous steps if: always() run: | + echo $TESTSUITE_STATUS_CHANGED_DURING_RUN if [ $TESTSUITE_STATUS_CHANGED_DURING_RUN = true ] ; then echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC ; fi From c6373da007010ed0cd50816a8c94bfad86b95833 Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 11:45:34 +0200 Subject: [PATCH 15/20] add extra output --- .github/workflows/github-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index cd8ff274f..d83cb8678 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -91,7 +91,7 @@ jobs: if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC echo "true" >> $TESTSUITE_STATUS_CHANGED_DURING_RUN - echo $TESTSUITE_STATUS_CHANGED_DURING_RUN + echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt @@ -102,7 +102,7 @@ jobs: - name: Run testsuite run: | - echo $TESTSUITE_STATUS_CHANGED_DURING_RUN + echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" rm -rf Sub-IoT-testsuite git clone --recurse-submodules https://github.com/Sub-IoT/Sub-IoT-testsuite.git cd Sub-IoT-testsuite @@ -122,7 +122,7 @@ jobs: - name: Reset atomic on failure of previous steps if: always() run: | - echo $TESTSUITE_STATUS_CHANGED_DURING_RUN + echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" if [ $TESTSUITE_STATUS_CHANGED_DURING_RUN = true ] ; then echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC ; fi From f2ca664f1414b32309de4c200c175bdbbf4c4dbd Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 13:04:44 +0200 Subject: [PATCH 16/20] change env var by writing to GITHUB_ENV --- .github/workflows/github-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index d83cb8678..450f3583c 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -90,7 +90,7 @@ jobs: run: | if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC - echo "true" >> $TESTSUITE_STATUS_CHANGED_DURING_RUN + echo "$TESTSUITE_STATUS_CHANGED_DURING_RUN=true" >> $GITHUB_ENV echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt From 17ed57974d3ee3cfa5907b78068c6e7c814d206d Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 13:25:58 +0200 Subject: [PATCH 17/20] fix setting of env var --- .github/workflows/github-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 450f3583c..f0ad80c92 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -90,7 +90,7 @@ jobs: run: | if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC - echo "$TESTSUITE_STATUS_CHANGED_DURING_RUN=true" >> $GITHUB_ENV + echo "TESTSUITE_STATUS_CHANGED_DURING_RUN=true" >> $GITHUB_ENV echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt @@ -119,7 +119,7 @@ jobs: name: test-results path: Sub-IoT-testsuite/report.xml - - name: Reset atomic on failure of previous steps + - name: Reset var on failure of previous steps if: always() run: | echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" From 20be29ce928e8789ea4eb21d70e67adc5b8d855f Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 13:29:40 +0200 Subject: [PATCH 18/20] Remove debug statements --- .github/workflows/github-ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index f0ad80c92..243bf5645 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -91,7 +91,6 @@ jobs: if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC echo "TESTSUITE_STATUS_CHANGED_DURING_RUN=true" >> $GITHUB_ENV - echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt @@ -102,7 +101,6 @@ jobs: - name: Run testsuite run: | - echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" rm -rf Sub-IoT-testsuite git clone --recurse-submodules https://github.com/Sub-IoT/Sub-IoT-testsuite.git cd Sub-IoT-testsuite @@ -119,10 +117,9 @@ jobs: name: test-results path: Sub-IoT-testsuite/report.xml - - name: Reset var on failure of previous steps + - name: Reset lock on failure of previous steps if: always() run: | - echo "set status is $TESTSUITE_STATUS_CHANGED_DURING_RUN" if [ $TESTSUITE_STATUS_CHANGED_DURING_RUN = true ] ; then echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC ; fi From f40129f771cc00bd5b6208f67a4818d47c49fd6b Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Fri, 29 Apr 2022 14:14:58 +0200 Subject: [PATCH 19/20] change to lsof-based checker --- .github/workflows/github-ci.yml | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 243bf5645..7b8f5e50c 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -79,18 +79,15 @@ jobs: name: Run Testsuite runs-on: self-hosted needs: generate-builds - env: - TESTSUITE_STATUS_CHANGED_DURING_RUN: "false" - TESTSUITE_RUNNING_STATUS_LOC: ${{ secrets.TESTSUITE_RUNNING_STATUS_LOC }} steps: - uses: actions/download-artifact@v3 - name: Flash builds to devices run: | - if [ $(cat $TESTSUITE_RUNNING_STATUS_LOC) = RUNNING ] ; then exit 1; fi - echo RUNNING > $TESTSUITE_RUNNING_STATUS_LOC - echo "TESTSUITE_STATUS_CHANGED_DURING_RUN=true" >> $GITHUB_ENV + if [ lsof -i -P -n | grep -q JLinkExe ] ; then exit 1; fi + if [ lsof -n /dev/ttyUSB0 | grep -q /dev/ttyUSB0 ] ; then exit 1; fi + if [ lsof -n /dev/ttyUSB1 | grep -q /dev/ttyUSB1 ] ; then exit 1; fi cd build/apps/modem JLinkExe -SelectEmuBySN 770821797 -CommandFile jlink-flash-full.script > flashOutput1.txt JLinkExe -SelectEmuBySN 772958091 -CommandFile jlink-flash-full.script > flashOutput2.txt @@ -109,7 +106,6 @@ jobs: pip install -r requirements.txt cd ../.. python2 run.py --serial-test-device=/dev/ttyUSB0 --serial-dut=/dev/ttyUSB1 -m "not band433 and not band915 and not known_issue" --junitxml report.xml -v - echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC - name: Upload test results uses: actions/upload-artifact@v2 @@ -117,11 +113,5 @@ jobs: name: test-results path: Sub-IoT-testsuite/report.xml - - name: Reset lock on failure of previous steps - if: always() - run: | - if [ $TESTSUITE_STATUS_CHANGED_DURING_RUN = true ] ; then echo STOPPED > $TESTSUITE_RUNNING_STATUS_LOC ; fi - - \ No newline at end of file From f34c6cc431257dedd21b7153a3be1b64e8651e5b Mon Sep 17 00:00:00 2001 From: Joseph Finnegan Date: Tue, 19 Apr 2022 17:43:35 +0200 Subject: [PATCH 20/20] apply clang formatter --- .clang-format | 64 ++++++++++++++++++++++++++++++--- .github/workflows/github-ci.yml | 20 +++++++++-- clang-format-patch.sh | 13 +++++++ 3 files changed, 91 insertions(+), 6 deletions(-) create mode 100755 clang-format-patch.sh diff --git a/.clang-format b/.clang-format index ddefcc95c..6f81f9ec3 100644 --- a/.clang-format +++ b/.clang-format @@ -1,8 +1,64 @@ --- BasedOnStyle: WebKit -ColumnLimit: '120' -# IndentWidth: '4' -# TabWidth: '4' -# UseTab: Always +AlignAfterOpenBracket: Align +AlignConsecutiveMacros: 'true' +AlignConsecutiveAssignments: 'true' +AlignConsecutiveDeclarations: 'false' +AlignEscapedNewlines: Left +AlignOperands: 'true' +AlignTrailingComments: 'true' +AllowAllArgumentsOnNextLine: 'true' +AllowAllConstructorInitializersOnNextLine: 'true' +AllowAllParametersOfDeclarationOnNextLine: 'true' +AllowShortBlocksOnASingleLine: 'true' +AllowShortCaseLabelsOnASingleLine: 'false' +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: None +AllowShortLoopsOnASingleLine: 'false' +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: 'false' +AlwaysBreakTemplateDeclarations: 'No' +BinPackArguments: 'true' +BinPackParameters: 'true' +BreakAfterJavaFieldAnnotations: 'true' +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Allman +BreakBeforeTernaryOperators: 'true' +BreakConstructorInitializers: AfterColon +BreakInheritanceList: AfterColon +ColumnLimit: '150' +CompactNamespaces: 'false' +ConstructorInitializerAllOnOneLineOrOnePerLine: 'false' +Cpp11BracedListStyle: 'false' +DerivePointerAlignment: 'false' +DisableFormat: 'false' +FixNamespaceComments: 'false' +IncludeBlocks: Preserve +IndentCaseLabels: 'true' +IndentPPDirectives: BeforeHash +IndentWidth: '4' +IndentWrappedFunctionNames: 'true' +KeepEmptyLinesAtTheStartOfBlocks: 'false' +Language: Cpp +MaxEmptyLinesToKeep: '1' +PointerAlignment: Left +ReflowComments: 'true' +SortIncludes: 'true' +SpaceAfterCStyleCast: 'false' +SpaceAfterLogicalNot: 'false' +SpaceAfterTemplateKeyword: 'false' +SpaceBeforeAssignmentOperators: 'true' +SpaceBeforeCpp11BracedList: 'false' +SpaceBeforeCtorInitializerColon: 'false' +SpaceBeforeParens: Never +SpaceBeforeRangeBasedForLoopColon: 'false' +SpaceInEmptyParentheses: 'false' +SpacesInAngles: 'false' +SpacesInCStyleCastParentheses: 'false' +SpacesInParentheses: 'false' +SpacesInSquareBrackets: 'false' +TabWidth: '4' +UseTab: Never ... diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml index 7b8f5e50c..4873a7fcf 100644 --- a/.github/workflows/github-ci.yml +++ b/.github/workflows/github-ci.yml @@ -113,5 +113,21 @@ jobs: name: test-results path: Sub-IoT-testsuite/report.xml - - \ No newline at end of file + check-clang-format: + name: Check CLang format + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Apply formatter + run: | + ./clang-format-patch.sh + if [[ -f clang_format.patch ]]; then exit 1; fi + + - name: Upload patch + uses: actions/upload-artifact@v2 + if: failure() + with: + name: patch + path: clang_format.patch \ No newline at end of file diff --git a/clang-format-patch.sh b/clang-format-patch.sh new file mode 100755 index 000000000..be082df9d --- /dev/null +++ b/clang-format-patch.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +find . -type d \( -path ./stack/cmake -o -path ./stack/framework/hal \) -prune -o -iname *.h -o -iname *.c | xargs clang-format-10 -style=file -i -fallback-style=none + +git diff > clang_format.patch + +# Delete if 0 size +if [ ! -s clang_format.patch ] +then + rm clang_format.patch +fi + +exit 0