diff --git a/src/modules/serial_number_info/doc/index.md b/src/modules/serial_number_info/doc/index.md new file mode 100644 index 0000000..39f7832 --- /dev/null +++ b/src/modules/serial_number_info/doc/index.md @@ -0,0 +1,7 @@ +## Serial number + +This module provides a serial number for other modules to use. It consists of +7 random letters/digits that are shown on a LCD display. + +### Credits +Module developed by redfast00. diff --git a/src/modules/serial_number_info/serial_number_info.ino b/src/modules/serial_number_info/serial_number_info.ino new file mode 100644 index 0000000..2e61346 --- /dev/null +++ b/src/modules/serial_number_info/serial_number_info.ino @@ -0,0 +1,50 @@ +// (c) 2020, redfast00 +// See the LICENSE file for conditions for copying + +#include +#include + +#define SERIAL_NUMBER_SIZE 7 + +uint8_t serial_number[SERIAL_NUMBER_SIZE]; + +// true when we need to update the LCD display +bool render_now = false; +LiquidCrystal lcd(7, 6, 5, 4, 3, 2); + + +void setup() { + Serial.begin(115200); + lcd.begin(16, 2); + lcd.clear(); + obus_module::setup(OBUS_TYPE_INFO, 1); +} + +obus_can::message message; + +void loop() { + obus_module::loopInfo(&message, info_generator); + if (render_now) { + render_now = false; + lcd.home(); + lcd.clear(); + lcd.print("Serial Number"); + lcd.setCursor(0, 1); + for (int i = 0; i < SERIAL_NUMBER_SIZE; i++) { + lcd.write(serial_number[i]); + } + } +} + +int info_generator(uint8_t* buffer) { + for (int i = 0; i < SERIAL_NUMBER_SIZE; i++) { + uint8_t generated = random(26 + 10); + if (generated < 26) + serial_number[i] = 'A' + generated; + else + serial_number[i] = '0' + (generated - 26); + } + memcpy(buffer, serial_number, SERIAL_NUMBER_SIZE); + render_now = true; + return SERIAL_NUMBER_SIZE; +} diff --git a/src/modules/testmodule_info/doc/index.md b/src/modules/testmodule_info/doc/index.md deleted file mode 100644 index 83532e5..0000000 --- a/src/modules/testmodule_info/doc/index.md +++ /dev/null @@ -1,6 +0,0 @@ -## Testmodule info - -This is a simple info module - -### Credits -Module developed by redfast00. diff --git a/src/modules/testmodule_info/testmodule_info.ino b/src/modules/testmodule_info/testmodule_info.ino deleted file mode 100644 index f0cceaa..0000000 --- a/src/modules/testmodule_info/testmodule_info.ino +++ /dev/null @@ -1,41 +0,0 @@ -// (c) 2020, redfast00 -// See the LICENSE file for conditions for copying - -#include -#include - - -uint8_t serial_number[7]; -LiquidCrystal lcd(7, 6, 5, 4, 3, 2); - - -void setup() { - Serial.begin(115200); - obus_module::setup(OBUS_TYPE_INFO, OBUS_INFO_ID_DEVELOPMENT); - info_generator(serial_number); - lcd.begin(16, 2); - lcd.clear(); -} - -obus_can::message message; - -void loop() { - bool is_message_valid = obus_module::loopInfo(&message, info_generator); - lcd.home(); - for (int i = 0; i < 7; i++) { - lcd.write(serial_number[i]); - } -} - -int info_generator(uint8_t* buffer) { - serial_number[0] = random('A', 'Z'); - serial_number[1] = random('A', 'Z'); - serial_number[2] = random('A', 'Z'); - serial_number[3] = random('0', '9'); - serial_number[4] = random('0', '9'); - serial_number[5] = random('A', 'Z'); - serial_number[6] = random('0', '9'); - memcpy(buffer, serial_number, 7); - lcd.clear(); - return 7; -}