FIX: Merge in new board mode marker
Esse commit está contido em:
+122
-59
@@ -105,30 +105,6 @@ char OpenBCI_32bit_Library::getCharSerial1(void) {
|
||||
return Serial1.read();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description While processing incoming multi byte messages these will turn
|
||||
* true.
|
||||
* @return {boolean} - True if processing a message and false otherwise
|
||||
*/
|
||||
boolean OpenBCI_32bit_Library::isProcessingMultibyteMsg(void) {
|
||||
return isProcessingIncomingSettingsChannel || isProcessingIncomingSettingsLeadOff || settingBoardMode || settingSampleRate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to abort a multipack message
|
||||
*/
|
||||
void OpenBCI_32bit_Library::tryMultiAbort(void) {
|
||||
if (millis() > timeOfMultiByteMsgStart + 1000) {
|
||||
isProcessingIncomingSettingsChannel = false;
|
||||
isProcessingIncomingSettingsLeadOff = false;
|
||||
settingBoardMode = false;
|
||||
settingSampleRate = false;
|
||||
printAll("Timeout processing multi byte");
|
||||
printAll(" message - please send all");
|
||||
printAll(" commands at once as of v2");
|
||||
sendEOT();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Process one char at a time from serial port. This is the main
|
||||
@@ -142,16 +118,27 @@ boolean OpenBCI_32bit_Library::processChar(char character) {
|
||||
Serial1.print("pC: "); Serial1.println(character);
|
||||
}
|
||||
|
||||
if (isProcessingMultibyteMsg()) {
|
||||
if (isProcessingIncomingSettingsChannel) {
|
||||
processIncomingChannelSettings(character);
|
||||
} else if (isProcessingIncomingSettingsLeadOff) {
|
||||
processIncomingLeadOffSettings(character);
|
||||
} else if (settingBoardMode) {
|
||||
processIncomingBoardMode(character);
|
||||
} else if (settingSampleRate) {
|
||||
processIncomingSampleRate(character);
|
||||
}
|
||||
if (checkMultiCharCmdTimer()) { // we are in a multi char command
|
||||
switch (getMultiCharCommand()){
|
||||
case MULTI_CHAR_CMD_PROCESSING_INCOMING_SETTINGS_CHANNEL:
|
||||
processIncomingChannelSettings(character);
|
||||
break;
|
||||
case MULTI_CHAR_CMD_PROCESSING_INCOMING_SETTINGS_LEADOFF:
|
||||
processIncomingLeadOffSettings(character);
|
||||
break;
|
||||
case MULTI_CHAR_CMD_SETTINGS_BOARD_MODE:
|
||||
processIncomingBoardMode(character);
|
||||
break;
|
||||
case MULTI_CHAR_CMD_SETTINGS_SAMPLE_RATE:
|
||||
processIncomingSampleRate(character);
|
||||
break;
|
||||
case MULTI_CHAR_CMD_INSERT_MARKER:
|
||||
processInsertMarker(character);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} else { // Normal...
|
||||
switch (character){
|
||||
//TURN CHANNELS ON/OFF COMMANDS
|
||||
@@ -275,16 +262,14 @@ boolean OpenBCI_32bit_Library::processChar(char character) {
|
||||
|
||||
|
||||
// CHANNEL SETTING COMMANDS
|
||||
case OPENBCI_CHANNEL_CMD_SET: // This is the first byte that tells us to expect more commands
|
||||
isProcessingIncomingSettingsChannel = true;
|
||||
timeOfMultiByteMsgStart = millis();
|
||||
case OPENBCI_CHANNEL_CMD_SET: // This is a multi char command with a timeout
|
||||
startMultiCharCmdTimer(MULTI_CHAR_CMD_PROCESSING_INCOMING_SETTINGS_CHANNEL);
|
||||
numberOfIncomingSettingsProcessedChannel = 1;
|
||||
break;
|
||||
|
||||
// LEAD OFF IMPEDANCE DETECTION COMMANDS
|
||||
case OPENBCI_CHANNEL_IMPEDANCE_SET:
|
||||
isProcessingIncomingSettingsLeadOff = true;
|
||||
timeOfMultiByteMsgStart = millis();
|
||||
startMultiCharCmdTimer(MULTI_CHAR_CMD_PROCESSING_INCOMING_SETTINGS_LEADOFF);
|
||||
numberOfIncomingSettingsProcessedLeadOff = 1;
|
||||
break;
|
||||
|
||||
@@ -374,15 +359,13 @@ boolean OpenBCI_32bit_Library::processChar(char character) {
|
||||
|
||||
// BOARD TYPE SET TYPE
|
||||
case OPENBCI_BOARD_MODE_SET:
|
||||
settingBoardMode = true;
|
||||
timeOfMultiByteMsgStart = millis();
|
||||
startMultiCharCmdTimer(MULTI_CHAR_CMD_SETTINGS_BOARD_MODE);
|
||||
optionalArgCounter = 0;
|
||||
break;
|
||||
|
||||
// Sample rate set
|
||||
case OPENBCI_SAMPLE_RATE_SET:
|
||||
settingSampleRate = true;
|
||||
timeOfMultiByteMsgStart = millis();
|
||||
startMultiCharCmdTimer(MULTI_CHAR_CMD_SETTINGS_SAMPLE_RATE);
|
||||
break;
|
||||
|
||||
case OPENBCI_WIFI_ATTACH:
|
||||
@@ -427,6 +410,65 @@ boolean OpenBCI_32bit_Library::processChar(char character) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the timer on multi char commands
|
||||
* @param cmd {char} the command received on the serial stream. See enum MULTI_CHAR_COMMAND
|
||||
* @returns void
|
||||
*/
|
||||
void OpenBCI_32bit_Library::startMultiCharCmdTimer(char cmd) {
|
||||
isMultiCharCmd = true;
|
||||
multiCharCommand = cmd;
|
||||
multiCharCmdTimeout = millis() + MULTI_CHAR_COMMAND_TIMEOUT_MS;
|
||||
}
|
||||
|
||||
/**
|
||||
* End the timer on multi char commands
|
||||
* @param None
|
||||
* @returns void
|
||||
*/
|
||||
void OpenBCI_32bit_Library::endMultiCharCmdTimer(void) {
|
||||
isMultiCharCmd = false;
|
||||
multiCharCommand = NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for valid on multi char commands
|
||||
* @param None
|
||||
* @returns {boolean} true if a multi char commands is active and the timer is running, otherwise False
|
||||
*/
|
||||
boolean OpenBCI_32bit_Library::checkMultiCharCmdTimer(void) {
|
||||
if (isMultiCharCmd){
|
||||
if (millis() < multiCharCmdTimeout)
|
||||
return true;
|
||||
else { // the timer has timed out - reset the multi char timeout
|
||||
endMultiCharCmdTimer();
|
||||
printAll("Timeout processing multi byte");
|
||||
printAll(" message - please send all");
|
||||
printAll(" commands at once as of v2");
|
||||
sendEOT();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* To be called at some point in every loop function
|
||||
*/
|
||||
void OpenBCI_32bit_Library::loop(void) {
|
||||
if (board.isMultiCharCmd) {
|
||||
board.checkMultiCharCmdTimer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the active multi char command
|
||||
* @param None
|
||||
* @returns {char} multiCharCommand
|
||||
*/
|
||||
char OpenBCI_32bit_Library::getMultiCharCommand(void){
|
||||
return multiCharCommand;
|
||||
}
|
||||
|
||||
boolean OpenBCI_32bit_Library::processCharWifi(char character) {
|
||||
commandFromSPI = true;
|
||||
boolean retVal = processChar(character);
|
||||
@@ -685,7 +727,7 @@ void OpenBCI_32bit_Library::processIncomingBoardMode(char c) {
|
||||
sendEOT();
|
||||
} else if (isDigit(c)) {
|
||||
uint8_t digit = c - '0';
|
||||
if (digit <= BOARD_MODE_DIGITAL) {
|
||||
if (digit < BOARD_MODE_END_OF_MODES) {
|
||||
setBoardMode(digit);
|
||||
printSuccess();
|
||||
printAll(getBoardMode());
|
||||
@@ -701,7 +743,7 @@ void OpenBCI_32bit_Library::processIncomingBoardMode(char c) {
|
||||
printAll("invalid board mode value.");
|
||||
sendEOT();
|
||||
}
|
||||
settingBoardMode = false;
|
||||
endMultiCharCmdTimer();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -805,9 +847,27 @@ void OpenBCI_32bit_Library::processIncomingSampleRate(char c) {
|
||||
sendEOT();
|
||||
}
|
||||
}
|
||||
settingSampleRate = false;
|
||||
endMultiCharCmdTimer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description When a '`x' is found on the serial port it is a signal to insert a marker
|
||||
* of value x into the AUX1 stream (auxData[0]). This function sets the flag to indicate that a new marker
|
||||
* is available. The marker will be inserted during the serial and sd write functions
|
||||
* @param character {char} - The character that will be inserted into the data stream
|
||||
*/
|
||||
void OpenBCI_32bit_Library::processInsertMarker(char c) {
|
||||
if (c < 128) {
|
||||
markerValue = c;
|
||||
newMarkerReceived = true;
|
||||
} else {
|
||||
markerValue = 0;
|
||||
newMarkerReceived = false;
|
||||
}
|
||||
endMultiCharCmdTimer();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description When a 'x' is found on the serial port, we jump to this function
|
||||
* where we continue to read from the serial port and read the
|
||||
@@ -820,7 +880,7 @@ void OpenBCI_32bit_Library::processIncomingChannelSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedChannel = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsChannel = false;
|
||||
endMultiCharCmdTimer();
|
||||
|
||||
if (!streaming) {
|
||||
printFailure();
|
||||
@@ -864,7 +924,7 @@ void OpenBCI_32bit_Library::processIncomingChannelSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedChannel = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsChannel = false;
|
||||
endMultiCharCmdTimer();
|
||||
|
||||
}
|
||||
break;
|
||||
@@ -878,7 +938,7 @@ void OpenBCI_32bit_Library::processIncomingChannelSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedChannel = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsChannel = false;
|
||||
endMultiCharCmdTimer();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -909,7 +969,7 @@ void OpenBCI_32bit_Library::processIncomingChannelSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedChannel = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsChannel = false;
|
||||
endMultiCharCmdTimer();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -927,7 +987,7 @@ void OpenBCI_32bit_Library::processIncomingLeadOffSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedLeadOff = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsLeadOff = false;
|
||||
endMultiCharCmdTimer();
|
||||
|
||||
if (!streaming) {
|
||||
printFailure();
|
||||
@@ -959,8 +1019,7 @@ void OpenBCI_32bit_Library::processIncomingLeadOffSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedLeadOff = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsLeadOff = false;
|
||||
|
||||
endMultiCharCmdTimer();
|
||||
}
|
||||
break;
|
||||
default: // should have exited
|
||||
@@ -974,7 +1033,7 @@ void OpenBCI_32bit_Library::processIncomingLeadOffSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedLeadOff = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsLeadOff = false;
|
||||
endMultiCharCmdTimer();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1002,7 +1061,7 @@ void OpenBCI_32bit_Library::processIncomingLeadOffSettings(char character) {
|
||||
numberOfIncomingSettingsProcessedLeadOff = 0;
|
||||
|
||||
// put flag back down
|
||||
isProcessingIncomingSettingsLeadOff = false;
|
||||
endMultiCharCmdTimer();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1035,10 +1094,7 @@ void OpenBCI_32bit_Library::initializeVariables(void) {
|
||||
channelDataAvailable = false;
|
||||
commandFromSPI = false;
|
||||
daisyPresent = false;
|
||||
isProcessingIncomingSettingsChannel = false;
|
||||
isProcessingIncomingSettingsLeadOff = false;
|
||||
settingBoardMode = false;
|
||||
settingSampleRate = false;
|
||||
endMultiCharCmdTimer(); // this initializes and resets the variables
|
||||
streaming = false;
|
||||
verbosity = false; // when verbosity is true, there will be Serial feedback
|
||||
|
||||
@@ -2536,6 +2592,13 @@ void OpenBCI_32bit_Library::updateChannelData(void) {
|
||||
auxData[1] = (wifi.present ? 0 : digitalRead(13) << 8) | digitalRead(17);
|
||||
auxData[2] = wifi.present ? 0 : digitalRead(18);
|
||||
break;
|
||||
case BOARD_MODE_MARKER:
|
||||
if (newMarkerReceived){
|
||||
auxData[0] = (int)markerValue;
|
||||
markerValue = 0;
|
||||
newMarkerReceived = false;
|
||||
}
|
||||
break;
|
||||
case BOARD_MODE_DEBUG:
|
||||
case BOARD_MODE_DEFAULT:
|
||||
break;
|
||||
|
||||
@@ -27,12 +27,29 @@ public:
|
||||
TIME_SYNC_MODE_OFF
|
||||
};
|
||||
|
||||
typedef enum MARKER_MODE {
|
||||
MARKER_MODE_ON,
|
||||
MARKER_MODE_OFF
|
||||
};
|
||||
|
||||
typedef enum BOARD_MODE {
|
||||
BOARD_MODE_DEFAULT,
|
||||
BOARD_MODE_DEBUG,
|
||||
BOARD_MODE_ANALOG,
|
||||
BOARD_MODE_DIGITAL,
|
||||
BOARD_MODE_MARKER,
|
||||
BOARD_MODE_BLE
|
||||
BOARD_MODE_END_OF_MODES // This must be the last entry-insert any new board modes above this line
|
||||
};
|
||||
|
||||
typedef enum MULTI_CHAR_COMMAND {
|
||||
MULTI_CHAR_CMD_NONE,
|
||||
MULTI_CHAR_CMD_PROCESSING_INCOMING_SETTINGS_CHANNEL,
|
||||
MULTI_CHAR_CMD_PROCESSING_INCOMING_SETTINGS_LEADOFF,
|
||||
MULTI_CHAR_CMD_SERIAL_PASSTHROUGH,
|
||||
MULTI_CHAR_CMD_SETTINGS_BOARD_MODE,
|
||||
MULTI_CHAR_CMD_SETTINGS_SAMPLE_RATE,
|
||||
MULTI_CHAR_CMD_INSERT_MARKER
|
||||
};
|
||||
|
||||
typedef enum PACKET_TYPE {
|
||||
@@ -101,6 +118,7 @@ public:
|
||||
void channelSettingsArraySetForAll(void);
|
||||
void channelSettingsArraySetForChannel(byte N);
|
||||
void channelSettingsSetForChannel(byte, byte, byte, byte, byte, byte, byte);
|
||||
boolean checkMultiCharCmdTimer(void);
|
||||
void csLow(int);
|
||||
void csHigh(int);
|
||||
void configureInternalTestSignal(byte,byte);
|
||||
@@ -108,6 +126,7 @@ public:
|
||||
void deactivateChannel(byte); // disable given channel 1-8(16)
|
||||
void disable_accel(void); // stop data acquisition and go into low power mode
|
||||
void enable_accel(byte); // start acceleromoeter with default settings
|
||||
void endMultiCharCmdTimer(void);
|
||||
void endSerial0(void);
|
||||
void endSerial1(void);
|
||||
const char* getBoardMode(void);
|
||||
@@ -119,6 +138,7 @@ public:
|
||||
char getDefaultChannelSettingForSettingAscii(byte);
|
||||
char getGainForAsciiChar(char);
|
||||
uint8_t * getGains(void);
|
||||
unsigned int getMultiCharCommand( void );
|
||||
char getNumberForAsciiChar(char);
|
||||
const char* getSampleRate(void);
|
||||
char getTargetSSForConstrainedChannelNumber(byte);
|
||||
@@ -150,6 +170,7 @@ public:
|
||||
boolean processCharWifi(char);
|
||||
void processIncomingBoardMode(char);
|
||||
void processIncomingSampleRate(char);
|
||||
void processInsertMarker(char);
|
||||
void processIncomingChannelSettings(char);
|
||||
void processIncomingLeadOffSettings(char);
|
||||
void reportDefaultChannelSettings(void);
|
||||
@@ -168,6 +189,7 @@ public:
|
||||
void sendEOT(void);
|
||||
void setSerialInfo(SerialInfo, boolean, boolean, uint32_t);
|
||||
boolean smellDaisy(void);
|
||||
void startMultiCharCmdTimer(char);
|
||||
void streamSafeChannelDeactivate(byte);
|
||||
void streamSafeChannelActivate(byte);
|
||||
void streamSafeChannelSettingsForChannel(byte, byte, byte, byte, byte, byte, byte);
|
||||
@@ -309,15 +331,16 @@ private:
|
||||
// Variables
|
||||
boolean commandFromSPI;
|
||||
boolean firstDataPacket;
|
||||
boolean isProcessingIncomingSettingsChannel;
|
||||
boolean isProcessingIncomingSettingsLeadOff;
|
||||
boolean isProcessingIncomingSerialPassThru;
|
||||
boolean isMultiCharCmd; // A multi char command is in progress
|
||||
boolean isRunning;
|
||||
boolean settingBoardMode;
|
||||
boolean settingSampleRate;
|
||||
boolean newMarkerReceived; // flag to indicate a new marker has been received
|
||||
byte bufferBLEPosition;
|
||||
byte regData[24]; // array is used to mirror register data
|
||||
char buffer[1];
|
||||
char markerValue;
|
||||
char multiCharCommand; // The type of command
|
||||
char currentChannelSetting;
|
||||
char optionalArgBuffer5[5];
|
||||
char optionalArgBuffer6[6];
|
||||
@@ -330,6 +353,7 @@ private:
|
||||
int numberOfIncomingSettingsProcessedLeadOff;
|
||||
int numberOfIncomingSettingsProcessedBoardType;
|
||||
uint8_t optionalArgCounter;
|
||||
unsigned long multiCharCmdTimeout; // the timeout in millis of the current multi char command
|
||||
unsigned long timeOfLastRead;
|
||||
unsigned long timeOfMultiByteMsgStart;
|
||||
|
||||
|
||||
@@ -330,6 +330,9 @@
|
||||
/** Set sample rate */
|
||||
#define OPENBCI_SAMPLE_RATE_SET '~'
|
||||
|
||||
/** Insert marker into the stream */
|
||||
#define OPENBCI_INSERT_MARKER '`'
|
||||
|
||||
/** Sync Clocks */
|
||||
#define OPENBCI_TIME_SET '<'
|
||||
#define OPENBCI_TIME_STOP '>'
|
||||
@@ -353,6 +356,9 @@
|
||||
#define OPENBCI_SAMPLE_RATE_125 125
|
||||
#define OPENBCI_SAMPLE_RATE_250 250
|
||||
|
||||
/** Time out for multi char commands **/
|
||||
#define MULTI_CHAR_COMMAND_TIMEOUT_MS 1000
|
||||
|
||||
/** Packet Size */
|
||||
#define OPENBCI_PACKET_SIZE 33
|
||||
|
||||
|
||||
+3
-1
@@ -7,11 +7,13 @@
|
||||
* Send channel gains to wifi shield at start of stream
|
||||
* takes ~4 seconds for the wifi shield to be reachable
|
||||
* Add ability to turn external serial port `Serial1` on through commands.
|
||||
* Change board types on the fly! No longer do you have to upload new code to the Cyton's Pic32 just to do an analog read. You can now read from analog or digital pins with the press send of a code! `/` now sets the board mode, where:
|
||||
* Change board types on the fly! No longer do you have to upload new code to the Cyton's Pic32 just to do an analog read. You can now read from analog or digital pins with the press send of a code! `'/x'` now sets the board mode, where x can be one of the following:
|
||||
* BOARD_MODE_DEFAULT is `0`
|
||||
* BOARD_MODE_DEBUG is `1`
|
||||
* BOARD_MODE_ANALOG is `2`
|
||||
* BOARD_MODE_DIGITAL is `3`
|
||||
* BOARD_MODE_MARKER is `4`
|
||||
* A new board mode called MARKER. In this mode, if a command in the format of ``'`n'`` (where n is ASCII '0':'9') is received by the Cyton over any of the serial streams (including wifi) then a marker of int(n) is inserted in the AUX1 channel. Note that this mode is mutually exclusive to the DEFAULT (accelerometer mode) as it uses the AUX1/ACCELX channel.
|
||||
* Add loop function for internal timing operations related to power on reset for wifi shield, remove `loop` to free up pins and such and remove wifi capability.
|
||||
* Add function to turn time stamps on `useTimeStamp(true)`, time stamps are disabled by default. Note the Wifi shield will use NTP time stamps.
|
||||
* Add wifi commands:
|
||||
|
||||
@@ -18,13 +18,8 @@ void loop() {
|
||||
board.sendChannelData();
|
||||
}
|
||||
}
|
||||
// Check the serial port for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial0());
|
||||
}
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Check the serial ports for new data
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
if (board.hasDataSerial1()) board.processChar(board.getCharSerial1());
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -19,17 +19,8 @@ void loop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Check the serial port for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial0());
|
||||
}
|
||||
if (board.hasDataSerial1()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial1());
|
||||
}
|
||||
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Check the serial ports for new data
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
if (board.hasDataSerial1()) board.processChar(board.getCharSerial1());
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -103,8 +103,5 @@ void loop() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -29,14 +29,8 @@ void loop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Check the serial port for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial0());
|
||||
}
|
||||
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Check the serial ports for new data
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
if (board.hasDataSerial1()) board.processChar(board.getCharSerial1());
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -30,14 +30,8 @@ void loop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Check the serial port for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial0());
|
||||
}
|
||||
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Check the serial ports for new data
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
if (board.hasDataSerial1()) board.processChar(board.getCharSerial1());
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -27,13 +27,8 @@ void loop() {
|
||||
board.sendChannelData();
|
||||
}
|
||||
}
|
||||
// Check the serial port for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial0());
|
||||
}
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Check the serial ports for new data
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
if (board.hasDataSerial1()) board.processChar(board.getCharSerial1());
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -63,12 +63,6 @@ void loop() {
|
||||
}
|
||||
}
|
||||
// Check the serial port for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char and process it
|
||||
board.processChar(board.getCharSerial0());
|
||||
}
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
board.loop();
|
||||
}
|
||||
|
||||
@@ -22,26 +22,14 @@ void loop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Check the serial ports for new data
|
||||
if (board.hasDataSerial0()) board.processChar(board.getCharSerial0());
|
||||
if (board.hasDataSerial1()) board.processChar(board.getCharSerial1());
|
||||
board.loop();
|
||||
|
||||
// Call to wifi loop
|
||||
wifi.loop();
|
||||
|
||||
// Check serial 0 for new data
|
||||
if (board.hasDataSerial0()) {
|
||||
// Read one char from the serial 0 port
|
||||
char newChar = board.getCharSerial0();
|
||||
|
||||
// Send to the sd library for processing
|
||||
sdProcessChar(newChar);
|
||||
|
||||
// Send to the board library
|
||||
board.processChar(newChar);
|
||||
}
|
||||
|
||||
if (wifi.hasData()) {
|
||||
// Read one char from the wifi shield
|
||||
char newChar = wifi.getChar();
|
||||
|
||||
@@ -70,10 +70,8 @@ void loop() {
|
||||
board.processChar(newChar);
|
||||
}
|
||||
|
||||
// Used to abort multi part messages
|
||||
if (board.isProcessingMultibyteMsg()) {
|
||||
board.tryMultiAbort();
|
||||
}
|
||||
// Call the loop function on the board
|
||||
board.loop();
|
||||
|
||||
// Call to wifi loop
|
||||
wifi.loop();
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário