Hello everybody!
Im trying to sort out a number of things here, lots of inputs/outputs, each on different i2c device and pin number, each affecting / affected by different things, like a turn indicator right button activates the turn indicator right light function.
I would prefer a global array of struct and be able to modify it freely from a few different classes.
To examplify here; im working on a "prototype" for my main project, just focusing on the inputs here and most of the functions and members are just placeholders or rudimentary code, but this should give you an idea of what im doing here..
File: test_buttons.ino
#include "structs.h"
#include "definitions.h"
#include "testClass.h"
testClass test;
struct magicButton Button[] = { // {device,pin,vector, isPressed, clickCount, clickType.
 {0,0,_one,false,0,0}, {0,1,_two,false,0,0}, {0,2,_three,false,0,0}, {0,3,_four,false,0,0},
 {1,0,_five,false,0,0}, {1,1,_six,false,0,0}, {1,2,_seven,false,0,0}, {1,3,_eight,false,0,0}
 };
void setup() {
 // put your setup code here, to run once:
}
void loop() {
 Button = test.doButtons(Button, sizeof(Button));
}
File: structs.h
#ifndef _structs_h
#define _structs_h
struct magicButton {
 uint8_t device;  // i2c device address
 uint8_t pin;     // the pin number
 uint8_t vector;  // what vehicle light function to affect
 bool isPressed;
 uint8_t clickCount; // counts each if(isPressed), to debounce and return clickType when !isPressed
 uint8_t clickType; // if 1 = shortclicked, 2 = longclicked. returns to 0 after read.
};
#endif // end _structs_h
File: testClass.cpp
//Â a test-class to manage button stats
#include "testClass.h"
#include "definitions.h"
struct magicButton testClass::doButtons(struct magicButton btn[], uint8_t numBtns) {
 for (uint8_t i = 0; i < numBtns; i++) {
  if(btn[i].isPressed) {
   btn[i].clickCount++;
  }
 }
 return &btn;
}
File: testClass.h
#ifndef _testClass_h
#define _testClass_h
#include "Arduino.h"
#include "structs.h"
class testClass {
 public:
 struct magicButton doButtons(struct magicButton btn[], uint8_t numBtns);
Â
 private:
 uint8_t _numBtns = 9;
};
#endif // end _testClass_h
As you can see, im playing around with the framework, focusing on how to access data containers more than on the actual data itself, and i am getting build errors when i try this exact code.
So i know i am doing it wrong and therefore im asking here, how should i go about having different classes read and/or write to/from a global array of structs?