Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- evrast
- Date:
- 2017-10-02
- Revision:
- 1:fe18dd0ba172
- Parent:
- 0:53817a293b39
- Child:
- 2:ddaf240af296
File content as of revision 1:fe18dd0ba172:
#include "mbed.h"
DigitalOut myled(LED1);
Ticker flipper;
Serial pc(USBTX, USBRX);
Serial xBee(p13, p14);
DigitalOut reset(p8);
const uint8_t START_DELEMITER = 0x7E;
const uint8_t FRAME_TYPE_AT_REQUEST = 0x17;
const uint8_t FRAME_ID = 0x01;
const uint8_t ZERO = 0x00;
const uint8_t APPLY_CHANGES = 0x02;
const uint8_t FF_CONST = 0xFF;
const char OPEN_LED[2] = {'D','1'};
bool atCommand = false;
const int TRANSMIT_REQUEST_DATA = 12;
uint8_t addresse_64_bit[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uint8_t addresse_16_bit[2] = {0xFF,0xFE};
uint8_t pan_id[14]={0x7E, 0x00, 0x0A, 0x08, 0x01, 0x49, 0x44, 0x46, 0x46, 0x39, 0x39, 0x31, 0x31, 0x09};
void sendAtCommand(){
pc.printf("trure");
atCommand = true;
}
void sendAtCommandPaquet(const char* type){
uint8_t length = 0xF;
uint8_t paquet[25];
uint8_t checkSum= 0x0;
uint8_t LSBLength;
uint8_t MSBLength;
pc.printf("in");
LSBLength = length&0xff;
MSBLength = (length &0xff00) >> 8;
paquet[0] = START_DELEMITER; //start
paquet[1] = MSBLength; //length MSB
paquet[2] = LSBLength; //length LSB
paquet[3] = FRAME_TYPE_AT_REQUEST; //frame type
paquet[4] = FRAME_ID; //frame id
for(int i = 5; i < 13;i++) //64 bit addresse
{
paquet[i] = addresse_64_bit[i-5];
}
for(int i = 13; i < 15;i++) //16bit address
{
paquet[i] = addresse_16_bit[i-13];
}
paquet[15] = APPLY_CHANGES; //BroadCast Radius
paquet[16] = type[0];
paquet[17] = type[1];
paquet[18] = 0x05;
pc.printf("in2");
//check sum
for(int i = 3; i<length+3;i++)
{
checkSum += paquet[i];
}
checkSum = FF_CONST - checkSum;
paquet[length+3] = checkSum;
for(int i =0;i<length + 4;i++)
{
xBee.putc(paquet[i]);
}
}
void receiveTransmitRequest(int length,uint8_t type){
uint8_t data[100];
data[0] = type;
uint8_t origCheckSum;
uint8_t checkSum = type;
for (int i =1; i < length; i++)
{
data[i] = xBee.getc();
checkSum += data[i];
}
checkSum = 0xFF - checkSum;
origCheckSum = xBee.getc();
if(origCheckSum == checkSum){
for(int i = TRANSMIT_REQUEST_DATA; i <length;i++)
{
pc.printf("%x", data[i]);
}
}
else{
}
}
void receiveNewPaquet()
{
int length;
if(xBee.getc() == START_DELEMITER)
{
length = (((xBee.getc()) << 8));
length +=(xBee.getc());
uint8_t frame_type = xBee.getc();
switch (frame_type){
case 0x90:
receiveTransmitRequest(length, frame_type);
}
}
}
int main() {
flipper.attach (&sendAtCommand,1);
reset =0;
wait_ms(500);
reset=1;
wait(1);
xBee.printf("+++");
wait(1);
//
// for(int i =0;i <14;i++){
// xBee.putc(pan_id[i]);
// }
while(1) {
if(xBee.readable()){
receiveNewPaquet();
}
if (atCommand){
atCommand = false;
sendAtCommandPaquet(OPEN_LED);
}
}
}
