mbed library to connect to rfduino
rfduino_sketch.txt
- Committer:
- dbarbi1
- Date:
- 2014-01-08
- Revision:
- 5:cd05cc4dd824
- Parent:
- 2:effa15a46f51
File content as of revision 5:cd05cc4dd824:
/* * RFDuino sketch. Load this sketch into the rfduino using * the Arduino ide: http://arduino.cc/en/Main/Software */ #include <RFduinoBLE.h> //Commands #define HANDSHAKE 0x11 #define CONNECTED 0x22 #define TRANSMIT 0x33 #define RECEIVE 0x44 //connected flag unsigned char cFlag; //Transmit buffer unsigned char Tbuf[255]; void setup() { //clear flags cFlag = 0; // initialize serial: Serial.begin(9600); RFduinoBLE.deviceName = "RFduino"; RFduinoBLE.advertisementInterval = MILLISECONDS(300); // this is the data we want to appear in the advertisement // (the deviceName length plus the advertisement length must be <= 18 bytes RFduinoBLE.advertisementData = "rgb"; // start the BLE stack RFduinoBLE.begin(); } void loop() { // switch to lower power mode RFduino_ULPDelay(INFINITE); } void Handshake() { Serial.write(HANDSHAKE); } void Connected() { Serial.write(cFlag); } void Transmit() { unsigned int len; //get transmistion length len = (unsigned int)Serial.read(); if(len > 255) {len = 255;} //read byes to transmit for(int i=0;i<len;len++) { Tbuf[i]=Serial.read(); } RFduinoBLE.send((const char*)Tbuf, len); } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { if(Serial.available()) { // get the new byte: unsigned char comm = (char)Serial.read(); switch (comm) { case HANDSHAKE: Handshake(); break; case CONNECTED: Connected(); break; case TRANSMIT: Transmit(); break; default: break; } } } void RFduinoBLE_onConnect() { cFlag=1; } void RFduinoBLE_onDisconnect() { cFlag=0; } void RFduinoBLE_onReceive(char *data, int len) { noInterrupts(); if(len>255) { len=255;} //limit to 255 bytes for now Serial.write(RECEIVE); Serial.write((unsigned char)len); for(int i=0; i<len; i++) { Serial.write(data[i]); } //wait for handshake //Serial.read(); interrupts(); }