/* * RFDuino sketch. Load this sketch into the rfduino using * the

/*
* 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];
const int ledPin =
const int ledPin1 =
void setup() {
//clear flags
cFlag = 0;
4;
5;
// the number of the LED pin
// the number of the LED pin
// initialize serial:
Serial.begin(9600, 2, 3);
Serial.println("SetUp.\n");
// initialize pinMode as output.
pinMode(ledPin, OUTPUT);
pinMode(ledPin1,OUTPUT);
RFduinoBLE.deviceName = "Dorothy";
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 = "test10";
// start the BLE stack
RFduinoBLE.begin();
}
void loop() {
// switch to lower power mode
RFduino_ULPDelay(350);
}
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;
Serial.println("Connected.\n");
}
void RFduinoBLE_onDisconnect() {
cFlag=0;
Serial.println("NotConnected.\n");
}
void RFduinoBLE_onReceive(char *data, int len) {
if(len>255)
{ len=255;} //limit to 255 bytes for now
Serial.write(RECEIVE);
Serial.write((unsigned char)len);
uint8_t a = data[0];
if( a==1 )
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin, HIGH);
Serial.write(0x01);
}
else if( a==2 )
{
digitalWrite(ledPin, LOW);
digitalWrite(ledPin1, HIGH);
Serial.write(0x02);
}
}