arduino_ci
arduino_ci copied to clipboard
Mock Wire.h
Feature Request
Mock this library: https://www.arduino.cc/en/reference/wire
Compilation mocks now exist due to #72
It appears this will need to be implemented as an array of HardwareSerial objects within GODMODE.
It looks like the maximum depth of this mock will be to support the example shown here: https://www.arduino.cc/en/Tutorial/SamdSercom
Note the following (apparently internal) features that will need to be mocked somehow.
pinPeripheral()function, whose use below may or may not contain a typoTwoWire(something, something, something)constructor&sercom3variable of some sortSERCOM3_Handler-- not sure if this is some magic name
#include <Wire.h>
#include "wiring_private.h"
TwoWire myWire(&sercom3, 0, 1); // Create the new wire instance assigning it to pin 0 and 1
void setup()
{
myWire.begin(2); // join i2c bus with address #2
// use the internal function that reassigns the pins
pinPeripheral(0, PIO_SERCOM); //Assign SDA function to pin 0
pinPeripheral(1, PIO_SERCOM); //Assign SCL function to pin 1
myWire.onRequest(requestEvent); // register event
}
void loop()
{
delay(100);
}
// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent()
{
myWire.write("hello "); // respond with message of 6 bytes
// as expected by master
}
// Attach the interrupt handler to the SERCOM
extern "C" {
void SERCOM3_Handler(void);
void SERCOM3_Handler(void) {
myWire.onService();
}
}
Given that this mock exists, I'm closing this issue https://github.com/Arduino-CI/arduino_ci/blob/master/cpp/arduino/Wire.h