Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Elral/issue148 #152

Merged
merged 13 commits into from
Feb 28, 2022
10 changes: 4 additions & 6 deletions _Boards/Atmel/MFEEPROM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@


#include <Arduino.h>
#include "MFBoards.h"
#include "MFEEPROM.h"
#include <EEPROM.h>

MFEEPROM::MFEEPROM() {}
MFEEPROM::MFEEPROM()
{
eepromLength = EEPROM.length();
}

uint16_t MFEEPROM::get_length(void) {
return eepromLength;
Expand All @@ -23,10 +25,6 @@ void MFEEPROM::read_block(uint16_t adr, char data[], uint16_t len) {
}
}

void MFEEPROM::init() {
eepromLength = EEPROM.length();
}

void MFEEPROM::write_block (uint16_t adr, char data[], uint16_t len) {
if (adr + len >= eepromLength) return;
for (uint16_t i = 0; i<len; i++) {
Expand Down
7 changes: 1 addition & 6 deletions include/MFEEPROM.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@
/// \version 1.0 Initial release
// Copyright (C) 2021

#ifndef MFEEPROM_H
#define MFEEPROM_H
#pragma once

class MFEEPROM
{

public:
MFEEPROM();
void init(void);
uint16_t get_length(void);
void read_block(uint16_t addr, char data[], uint16_t len);
void write_block (uint16_t addr, char data[], uint16_t len);
Expand All @@ -24,6 +22,3 @@ class MFEEPROM
uint16_t eepromLength = 0;

};


#endif
70 changes: 70 additions & 0 deletions include/commandmessenger.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#ifndef _commandmessenger_h
#define _commandmessenger_h

#include <CmdMessenger.h>

enum
{
kTypeNotSet, // 0
kTypeButton, // 1
kTypeEncoderSingleDetent, // 2 (retained for backwards compatibility, use kTypeEncoder for new configs)
kTypeOutput, // 3
kTypeLedSegment, // 4
kTypeStepperDeprecated, // 5 (keep for backwards compatibility, doesn't support autohome)
kTypeServo, // 6
kTypeLcdDisplayI2C, // 7
kTypeEncoder, // 8
kTypeStepper, // 9 (new stepper type with auto zero support if btnPin is > 0)
kShiftRegister, // 10 Shift register support (example: 74HC595, TLC592X)
kTypeAnalogInput, // 11 Analog Device with 1 pin
kTypeInputShifter // 12 Input shift register support (example: 74HC165)
};

// This is the list of recognized commands. These can be commands that can either be sent or received.
// In order to receive, attach a callback function to these events
//
// If you increase this list, make sure to check that the MAXCALLBACKS value
// in CmdMessenger.h is set apropriately
enum
{
kInitModule, // 0
kSetModule, // 1
kSetPin, // 2
kSetStepper, // 3
kSetServo, // 4
kStatus, // 5, Command to report status
kEncoderChange, // 6
kButtonChange, // 7
kStepperChange, // 8
kGetInfo, // 9
kInfo, // 10
kSetConfig, // 11
kGetConfig, // 12
kResetConfig, // 13
kSaveConfig, // 14
kConfigSaved, // 15
kActivateConfig, // 16
kConfigActivated, // 17
kSetPowerSavingMode, // 18
kSetName, // 19
kGenNewSerial, // 20
kResetStepper, // 21
kSetZeroStepper, // 22
kTrigger, // 23
kResetBoard, // 24
kSetLcdDisplayI2C, // 25
kSetModuleBrightness, // 26
kSetShiftRegisterPins, // 27
kAnalogChange, // 28
kInputShifterChange, // 29
kDebug = 0xFF // 255 -> for Debug print later, changes in UI are required
};

void attachCommandCallbacks();
uint32_t getLastCommandMillis();
void setLastCommandMillis();

extern CmdMessenger cmdMessenger;


#endif
14 changes: 14 additions & 0 deletions include/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#pragma once

void OnSetConfig();
void OnResetConfig();
void OnSaveConfig();
void OnActivateConfig();
void loadConfig();
void OnGetConfig();
void OnGetInfo();
bool getStatusConfig();
void generateSerial(bool);
void OnGenNewSerial();
void OnSetName();
void _restoreName();
133 changes: 1 addition & 132 deletions include/mobiflight.h
Original file line number Diff line number Diff line change
@@ -1,137 +1,6 @@
#ifndef _mobiflight_h
#define _mobiflight_h

#include <MFEncoder.h>
#include <MFAnalog.h>
#include <CmdMessenger.h>

#define MF_BUTTON_DEBOUNCE_MS 10 // time between updating the buttons
#define MF_SERVO_DELAY_MS 5 // Time between servo updates
#define MF_ANALOGAVERAGE_DELAY_MS 10 // time between updating the analog average calculation
#define MF_ANALOGREAD_DELAY_MS 50 // time between sending analog values

enum
{
kTypeNotSet, // 0
kTypeButton, // 1
kTypeEncoderSingleDetent, // 2 (retained for backwards compatibility, use kTypeEncoder for new configs)
kTypeOutput, // 3
kTypeLedSegment, // 4
kTypeStepperDeprecated, // 5 (keep for backwards compatibility, doesn't support autohome)
kTypeServo, // 6
kTypeLcdDisplayI2C, // 7
kTypeEncoder, // 8
kTypeStepper, // 9 (new stepper type with auto zero support if btnPin is > 0)
kShiftRegister, // 10 Shift register support (example: 74HC595, TLC592X)
kTypeAnalogInput, // 11 Analog Device with 1 pin
kTypeInputShifter // 12 Input shift register support (example: 74HC165)
};

// This is the list of recognized commands. These can be commands that can either be sent or received.
// In order to receive, attach a callback function to these events
//
// If you increase this list, make sure to check that the MAXCALLBACKS value
// in CmdMessenger.h is set apropriately
enum
{
kInitModule, // 0
kSetModule, // 1
kSetPin, // 2
kSetStepper, // 3
kSetServo, // 4
kStatus, // 5, Command to report status
kEncoderChange, // 6
kButtonChange, // 7
kStepperChange, // 8
kGetInfo, // 9
kInfo, // 10
kSetConfig, // 11
kGetConfig, // 12
kResetConfig, // 13
kSaveConfig, // 14
kConfigSaved, // 15
kActivateConfig, // 16
kConfigActivated, // 17
kSetPowerSavingMode, // 18
kSetName, // 19
kGenNewSerial, // 20
kResetStepper, // 21
kSetZeroStepper, // 22
kTrigger, // 23
kResetBoard, // 24
kSetLcdDisplayI2C, // 25
kSetModuleBrightness, // 26
kSetShiftRegisterPins, // 27
kAnalogChange, // 28
kInputShifterChange, // 29
kDebug = 0xFF // 255 -> for Debug print later, changes in UI are required
};

void attachCommandCallbacks();
void OnResetBoard();
void generateSerial(bool force);
void loadConfig();
void _storeConfig();
void SetPowerSavingMode(bool state);
void updatePowerSaving();
void AddOutput(uint8_t pin, char const *name);
void ClearOutputs();
void AddButton(uint8_t pin, char const *name, bool repeat);
void ClearButtons();
void AddEncoder(uint8_t pin1, uint8_t pin2, uint8_t encoder_type, char const *name);
void ClearEncoders();
void AddLedSegment(int dataPin, int csPin, int clkPin, int numDevices, int brightness);
void ClearLedSegments();
void PowerSaveLedSegment(bool state);
void AddStepper(int pin1, int pin2, int pin3, int pin4, int btnPin1);
void ClearSteppers();
void AddServo(int pin);
void ClearServos();
void AddLcdDisplay(uint8_t address, uint8_t cols, uint8_t lines, char const *name);
void ClearLcdDisplays();
void handlerOnButton(uint8_t eventId, uint8_t pin, const char *name);
void handlerOnEncoder(uint8_t eventId, uint8_t pin, const char *name);
void OnSetConfig();
void resetConfig();
void OnResetConfig();
void OnSaveConfig();
void OnActivateConfig();
void _activateConfig();
void readConfig();
void OnUnknownCommand();
void OnGetInfo();
void OnGetConfig();
void OnSetPin();
void OnInitModule();
void OnSetModule();
void OnSetModuleBrightness();
void OnSetStepper();
void OnResetStepper();
void OnSetZeroStepper();
void updateSteppers();
void OnSetServo();
void updateServos();
void OnSetLcdDisplayI2C();
void readButtons();
void readEncoder();
void OnGenNewSerial();
void OnSetName();
void _storeName();
void _restoreName();
void OnTrigger();
void readAnalog();
void AddAnalog(uint8_t pin, char const *name, uint8_t sensitivity);
void ClearAnalog();
void handlerOnAnalogChange(int value, uint8_t pin, const char *name);
void OnInitOutputShifter();
void OnSetOutputShifterPins();
void AddOutputShifter(uint8_t latchPin, uint8_t clockPin, uint8_t dataPin, uint8_t modules, char const *name);
void AddInputShifter(uint8_t latchPin, uint8_t clockPin, uint8_t dataPin, uint8_t modules, char const *name);
void ClearInputShifters();
void readInputShifters();
void handlerInputShifterOnChange(uint8_t eventId, uint8_t pin, const char *name);
void loadConfig();

extern CmdMessenger cmdMessenger;

#endif
#endif
13 changes: 13 additions & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ build_flags =
-DMESSENGERBUFFERSIZE=96
-DMAXSTREAMBUFFERSIZE=96
-DDEFAULT_TIMEOUT=5000
; -DDEBUG2CMDMESSENGER=1
-I./src/MF_Analog
-I./src/MF_Button
-I./src/MF_Encoder
-I./src/MF_InputShifter
-I./src/MF_LCDDisplay
-I./src/MF_Output
-I./src/MF_OutputShifter
-I./src/MF_Segment
-I./src/MF_OutputShifter
-I./src/MF_Servo
-I./src/MF_OutputShifter
-I./src/MF_Stepper
src_filter =
+<*>
extra_scripts =
Expand Down
Loading