BayEOS-Arduino  1.8.0_0.0.4
BayXBee.cpp
1 #include "BayXBee.h"
2 
3 BayXBeeInterface::BayXBeeInterface(uint8_t sleep_pin, uint8_t wakeup_time, int wait_time_for_response, uint16_t destination) : XBeeInterface(){
4  _tx=Tx16Request(BAYXBEE_GATEWAY, _payload, 100);
5  _txStatus = TxStatusResponse();
6  _sleepPin=sleep_pin;
7  _wakeupTime=wakeup_time;
8  _destination=destination;
9  _waitTimeForResponse=wait_time_for_response;
10 }
11 
12 
13 void BayXBeeInterface::begin(long baud){
14  if(_sleepPin){
15  pinMode(_sleepPin,OUTPUT);
16  digitalWrite(_sleepPin,LOW);
17  }
18  i_begin(baud);
19 }
20 /*
21 uint8_t hex2int(uint8_t c){
22  if(c<='9') return c-'0';
23  else return 10+c-'A';
24 }
25 */
26 
27 
29  if(_sleepPin){
30  digitalWrite(_sleepPin,LOW);
31  delay(_wakeupTime);
32  }
33  _tx.setPayloadLength(_next);
34  _tx.setAddress16(_destination);
35  uint8_t r_value=0;
36  send(_tx);
37  if(_waitTimeForResponse>0){
38  if (readPacket(_waitTimeForResponse)) {
39  // got a response!
40  // should be a znet tx status
41  if (getResponse().getApiId() == TX_STATUS_RESPONSE) {
42  getResponse().getTxStatusResponse(_txStatus);
43  // get the delivery status, the fifth byte
44  if (_txStatus.getStatus() == SUCCESS) r_value=0;
45  else r_value=XBeeError_NoSuccess;
46  }
47  } else r_value=XBeeError_Timeout;
48  }
49  if(_sleepPin){
50  digitalWrite(_sleepPin,HIGH);
51  }
52  return r_value;
53 }
54 
55 #if ENABLE_RX
56 uint8_t BayXBeeInterface::readIntoPayload(int timeout){
57  if (! readPacket(timeout)) return 2;
58  // got something
59  if (getResponse().getApiId() != RX_16_RESPONSE ) return 3;
60  // got a rx16 packet
61  if(getResponse().isError()) return 1;
62 
64  startFrame(_rx.getData(0));
65  for(uint8_t i=1; i<_rx.getDataLength();i++){
66  addToPayload(_rx.getData(i));
67  }
68  return 0;
69 }
70 #endif
uint8_t sendPayload(void)
Definition: BayXBee.cpp:28
BayXBeeInterface(uint8_t sleep_pin=0, uint8_t wakeup_time=15, int wait_time_for_response=5000, uint16_t dest=BAYXBEE_GATEWAY)
Definition: BayXBee.cpp:3
void begin(long baud)
Definition: BayXBee.cpp:13
uint8_t addToPayload(uint8_t b)
Definition: BayEOS.h:418
void send(XBeeRequest &request)
Definition: XBee.cpp:1398
uint8_t readIntoPayload(int timeout=5000)
Definition: BayXBee.cpp:56
void getRx16Response(XBeeResponse &response)
Definition: XBee.cpp:565
XBeeResponse & getResponse()
Definition: XBee.cpp:1245
uint8_t getDataLength()
Definition: XBee.cpp:553
void startFrame(uint8_t type)
Definition: BayEOS.cpp:3
void getTxStatusResponse(XBeeResponse &response)
Definition: XBee.cpp:528
void setPayloadLength(uint8_t payloadLength)
Definition: XBee.cpp:811
uint8_t getData(int index)
Definition: XBee.cpp:650