ENTS-tock
Environmental NeTworked Sensor firmware on Tock OS
Loading...
Searching...
No Matches
main.c
Go to the documentation of this file.
1
17#include <stdio.h>
18#include <string.h>
19#include <unity.h>
20
21// ---------------------------------------------------------------------------
22// Forward declarations for test functions.
23// Required by -Wmissing-prototypes and -Wmissing-declarations.
24// ---------------------------------------------------------------------------
25
26void test_fram_size(void);
27void test_write_valid_data(void);
29void test_write_zero_length(void);
30void test_read_valid_data(void);
31void test_read_out_of_range(void);
32void test_read_zero_length(void);
33void test_read_status(void);
35
36// ---------------------------------------------------------------------------
37// Unity required callbacks (declared in unity.h, defined here).
38// ---------------------------------------------------------------------------
39
40void setUp(void) {}
41
42void tearDown(void) {}
43
44// ---------------------------------------------------------------------------
45// Test Cases (ported from stm32/test/test_fram/test_fram.c)
46// ---------------------------------------------------------------------------
47
48void test_fram_size(void) { TEST_ASSERT_EQUAL_UINT32(131072, fram_size()); }
49
51 uint8_t data[] = {1, 2, 3, 4, 5};
52 fram_status status = fram_write(0x00, data, sizeof(data));
53 TEST_ASSERT_EQUAL_INT(FRAM_OK, status);
54}
55
57 uint8_t data[] = {1, 2, 3, 4, 5};
58 fram_addr addr = fram_size() + 1;
59 fram_status status = fram_write(addr, data, sizeof(data));
60 TEST_ASSERT_EQUAL_INT(FRAM_OUT_OF_RANGE, status);
61}
62
64 uint8_t data[] = {1, 2, 3, 4, 5};
65 fram_status status = fram_write(0x00, data, 0);
66 TEST_ASSERT_EQUAL_INT(FRAM_OK, status);
67}
68
70 uint8_t write_data[] = {0xDE, 0xAD, 0xBE, 0xEF, 0x42};
71 fram_addr addr = 0x100;
72
73 fram_status status = fram_write(addr, write_data, sizeof(write_data));
74 TEST_ASSERT_EQUAL_INT_MESSAGE(FRAM_OK, status, "write failed");
75
76 uint8_t read_data[5] = {0};
77 status = fram_read(addr, sizeof(read_data), read_data);
78 TEST_ASSERT_EQUAL_INT_MESSAGE(FRAM_OK, status, "read failed");
79
80 TEST_ASSERT_EQUAL_UINT8_ARRAY(write_data, read_data, sizeof(write_data));
81}
82
84 uint8_t data[5];
85 fram_addr addr = fram_size() + 1;
86 fram_status status = fram_read(addr, sizeof(data), data);
87 TEST_ASSERT_EQUAL_INT(FRAM_OUT_OF_RANGE, status);
88}
89
91 uint8_t data[5];
92 fram_status status = fram_read(0x00, 0, data);
93 TEST_ASSERT_EQUAL_INT(FRAM_OK, status);
94}
95
96void test_read_status(void) {
97 uint8_t data[5];
98 fram_status status = fram_read(0x00, sizeof(data), data);
99 TEST_ASSERT_EQUAL_INT(FRAM_OK, status);
100}
101
103 uint8_t pattern_a[] = {0xAA, 0xBB, 0xCC};
104 uint8_t pattern_b[] = {0x11, 0x22, 0x33};
105 fram_addr addr_a = 0x200;
106 fram_addr addr_b = 0x300;
107
108 fram_status status;
109
110 status = fram_write(addr_a, pattern_a, sizeof(pattern_a));
111 TEST_ASSERT_EQUAL_INT_MESSAGE(FRAM_OK, status, "write A failed");
112
113 status = fram_write(addr_b, pattern_b, sizeof(pattern_b));
114 TEST_ASSERT_EQUAL_INT_MESSAGE(FRAM_OK, status, "write B failed");
115
116 uint8_t read_a[3] = {0};
117 uint8_t read_b[3] = {0};
118
119 status = fram_read(addr_a, sizeof(read_a), read_a);
120 TEST_ASSERT_EQUAL_INT_MESSAGE(FRAM_OK, status, "read A failed");
121
122 status = fram_read(addr_b, sizeof(read_b), read_b);
123 TEST_ASSERT_EQUAL_INT_MESSAGE(FRAM_OK, status, "read B failed");
124
125 TEST_ASSERT_EQUAL_UINT8_ARRAY(pattern_a, read_a, 3);
126 TEST_ASSERT_EQUAL_UINT8_ARRAY(pattern_b, read_b, 3);
127}
128
129// ---------------------------------------------------------------------------
130// Main
131// ---------------------------------------------------------------------------
132
133int main(void) {
134 UNITY_BEGIN();
135
136 RUN_TEST(test_fram_size);
137 RUN_TEST(test_write_valid_data);
138 RUN_TEST(test_write_zero_length);
139 RUN_TEST(test_write_out_of_range);
140 RUN_TEST(test_read_status);
141 RUN_TEST(test_read_zero_length);
142 RUN_TEST(test_read_out_of_range);
143 RUN_TEST(test_read_valid_data);
145
146 return UNITY_END();
147}
int main()
Definition main.c:4
const char data[]
Storage interface for onboard FRAM chips.
fram_status fram_write(fram_addr addr, const uint8_t *data, size_t len)
Write bytes at the given address.
Definition fram.c:20
fram_status
Definition fram.h:32
fram_status fram_read(fram_addr addr, size_t len, uint8_t *data)
Read bytes at the given address.
Definition fram.c:28
fram_addr fram_size(void)
Get the total size of FRAM in bytes.
Definition fram.c:36
uint32_t fram_addr
Definition fram.h:41
@ FRAM_OK
Definition fram.h:33
@ FRAM_OUT_OF_RANGE
Definition fram.h:35
void setUp(void)
Definition main.c:24
void tearDown(void)
Definition main.c:26
void test_write_out_of_range(void)
Definition main.c:56
void test_read_out_of_range(void)
Definition main.c:83
void test_write_valid_data(void)
Definition main.c:50
void test_read_status(void)
Definition main.c:96
void test_read_valid_data(void)
Definition main.c:69
void test_read_zero_length(void)
Definition main.c:90
void test_write_zero_length(void)
Definition main.c:63
void test_fram_size(void)
Definition main.c:48
void test_write_read_multiple_addresses(void)
Definition main.c:102