// class MyClass
// {
// using InputEvent = void (*)(const char*); //type aliasing
// //C++ version of: typedef void (*InputEvent)(const char*)
// public:
// void RegisterCallback(InputEvent InEvent)
// {
// Event = InEvent;
// }
// void Tick()
// {
// //
// //accumuate buffer here
// if (true) {
// //raise event
// Event(buffer);
// }
// }
// private:
// InputEvent Event;
// char buffer[10];
// };
// //global callback
// void ProcessData(const char* Data)
// {
// Serial.println(Data);
// }
// MyClass MClass;
// void setup() {
// Serial.begin(115200);
// // put your setup code here, to run once:
// MClass.RegisterCallback(ProcessData);
// }
// void loop() {
// // put your main code here, to run repeatedly:
// MClass.Tick();
// }
uint16_t sum(uint8_t a, uint8_t b) {
// Serial.print(a+b);
return a + b;
}
uint16_t mul(uint8_t a, uint8_t b) {
return a * b;
}
uint16_t arithm_op (uint16_t (*callback_func)(uint8_t, uint8_t),uint8_t a, uint8_t b) {
return callback_func(a,b);
}
int F1,F2;
void setup() {
Serial.begin(115200);
F2 = arithm_op(mul,4,5); /* Multiplication: 4 x 10*/
F1 = arithm_op(sum,7,20); /* Addition: 9 + 5 */
Serial.println(F1);
Serial.println(F2);
}
void loop(){
}