Skip to content

Commit

Permalink
Elral/issue148 (#152)
Browse files Browse the repository at this point in the history
* Split mobiflight.cpp into multiple files
Fixes #148
  • Loading branch information
elral authored Feb 28, 2022
1 parent b762215 commit b858b9f
Show file tree
Hide file tree
Showing 50 changed files with 1,582 additions and 1,519 deletions.
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

0 comments on commit b858b9f

Please sign in to comment.