60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
#include "DLLN3X.h"
|
|
|
|
using namespace zigbee_protocol;
|
|
|
|
DLLN3X dlln33; //Instantiating DLLN3X module
|
|
void zigbee_call_back(ZigbeeFrame &zframe) {
|
|
switch (zframe.getDesPort()) {
|
|
case 0x82:
|
|
{
|
|
/* Do everything you want to do */
|
|
char temp[200];
|
|
sprintf(temp, "Hello from port 0x%X: %.*s",zframe.getSrcPort(),zframe.getDataLength(),zframe.getData().data());
|
|
Serial.println(temp);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
while (!Serial || millis() < 5000)
|
|
;
|
|
dlln33.init(&Serial1);// could be used like HardwareSerial(Serial1, Serial2 and etc.) or SoftwareSerial
|
|
dlln33.setcallback(zigbee_call_back);
|
|
while(dlln33.read_addr()==0)
|
|
{
|
|
Serial.println("Waiting for DLLN3X to connect........");
|
|
delay(1000);
|
|
}
|
|
char temp[50];
|
|
sprintf(temp, "DLLN3X addr: 0x%04X.",dlln33.read_addr());
|
|
Serial.println(temp);
|
|
sprintf(temp, "DLLN3X network id: 0x%04X.",dlln33.read_network_id());
|
|
Serial.println(temp);
|
|
sprintf(temp, "DLLN3X channel: 0x%02X.",dlln33.read_channel());
|
|
Serial.println(temp);
|
|
sprintf(temp, "DLLN3X baud rate: %d.",dlln33.read_baudrate());
|
|
Serial.println(temp);
|
|
dlln33.set_addr(0xFFFF); //test error report
|
|
//dlln33.get_link_quality(YOUR_ANOTHER_CHIP_ADDR); //test link quility
|
|
dlln33.pin_control(DLLN3X::PIN::DLLN3X_PIN4, DLLN3X::PIN_CONTROL::OUT_HIGH); //test pin, PIN4 is TTx, PIN5 is TRx
|
|
}
|
|
|
|
uint64_t interval = 5000, pre_milli = 0;
|
|
void loop() {
|
|
dlln33.loop();
|
|
if (millis() - pre_milli >= interval) {
|
|
ZigbeeFrame zf;
|
|
zf.setSrcPort(0x81);
|
|
zf.setDesPort(0x82);
|
|
zf.setRemoteAddr(dlln33.read_addr());
|
|
zf.setData("Hello to port 0x82!");
|
|
dlln33.send(zf);
|
|
zf = zf + "I'm port 0x81!";
|
|
dlln33.send(zf);
|
|
pre_milli = millis();
|
|
}
|
|
} |