From 8c7e5b75f1f5e6c9dacdf20eb45b187f573f418a Mon Sep 17 00:00:00 2001 From: Mentalflow <312902918@qq.com> Date: Sat, 18 Mar 2023 13:25:22 +0800 Subject: [PATCH] V1.1.0 Update --- README.md | 17 +- examples/dlln3x_test/dlln3x_test.ino | 36 ++- imgs/example.png | Bin 101341 -> 100848 bytes keywords.txt | 55 +++- library.properties | 6 +- src/DLLN3X.cpp | 398 ++++++++++++++++----------- src/DLLN3X.h | 98 ++++--- src/zigbeeframe.h | 259 +++++++++++++++++ 8 files changed, 623 insertions(+), 246 deletions(-) create mode 100644 src/zigbeeframe.h diff --git a/README.md b/README.md index 0bfed88..66e27cb 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ # DLLN3X_zigbee_mesh_module_library This library allows you to use DLLN3X ZigBee mesh module very easily. +This library is now complete, the remaining work is mainly maintenance and bug fixes, welcome feedback by opening issues. + # Available Features 1. Basic message sending and receiving. 2. Module address reading. 3. On-chip red led flashing control. -4. Configuration reading, modification (baud rate, address, etc.).(TODO) -5. Error Report.(TODO) -6. Link quality test.(TODO) -7. On-chip pin control.(TODO) +4. Configuration reading, modification (baud rate, address, etc.). +5. Error Report. +6. Link quality test. +7. On-chip pin control. # Example run results @@ -17,6 +19,13 @@ This library allows you to use DLLN3X ZigBee mesh module very easily. # Change Log +**V1.1.0 2023.3.18** + ++ Completely rewritten. ++ Join the ZigbeeFrame container. ++ Greatly improve stability. ++ Supports configuration reading and modification, link quality testing, on-board pin control, error reporting, etc. + **V1.0.4 2023.1.26** - Bug fixes and stability improvements. diff --git a/examples/dlln3x_test/dlln3x_test.ino b/examples/dlln3x_test/dlln3x_test.ino index 6d058a3..2b511b1 100644 --- a/examples/dlln3x_test/dlln3x_test.ino +++ b/examples/dlln3x_test/dlln3x_test.ino @@ -1,16 +1,15 @@ #include "DLLN3X.h" +using namespace zigbee_protocol; + DLLN3X dlln33; //Instantiating DLLN3X module -zigbee_frame zframe; -void zigbee_call_back(uint8_t orig_port, - uint8_t dest_port, uint16_t addr, - uint8_t data[], int length) { - switch (dest_port) { +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",orig_port,data); + sprintf(temp, "Hello from port 0x%X: %.*s",zframe.getSrcPort(),zframe.getDataLength(),zframe.getData().data()); Serial.println(temp); break; } @@ -30,21 +29,32 @@ void setup() { Serial.println("Waiting for DLLN3X to connect........"); delay(1000); } - char temp[20]; + 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::PIN4, DLLN3X::PIN_CONTROL::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) { - zframe.src_port = 0x81; - zframe.des_port = 0x82; - *((uint16_t *)&zframe.remote_addrL) = dlln33.read_addr(); // send pkg to self. - strncpy((char*)zframe.data,"Hello to port 0x82!",19); - zframe.length = 19; - dlln33.send(&zframe); + 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(); } } \ No newline at end of file diff --git a/imgs/example.png b/imgs/example.png index e96ad342d81f4cd16a3b5f22b7ca4c37eb901838..7cdb86d12c9ad59a3d150cf12911297c78c8fe29 100644 GIT binary patch literal 100848 zcmce;cT`hb+b@dB-cqc9AgG|yd+!hwX`y$dO9@4K7a<^95a~i_p+&lM={+b_LIAiOX;Y{A|{myys9pj!4|GA8j!5SIKO4gclKF_bs1gR>^-Xx+T!o$P636+yl$HODQ z;o)78C-@sY6XJUpSWFfBu? zhgxKi#OhL3y6*Qsv$CRY;rOG=Y}NbxN0)H0QoC_Bgl*aLPwi_H$<_?Kv!@x>%n-8Y zcfNo5jre`8|DEy4>%8?4_Ovq9H2n8WN4+Pqsr?j$tJS=vwTLR4`i}AAg``cN#YvZq zN#ajcZ2Ga2^jF!a3fboeW=h)@nwv#jzr%ZP!h6|S!(&)t7_K~+ZEP4_-+bIUIdo8Y zcy75`s49Eq<3zx4z7Xc=3=9umJzu{d=r$h4h3?^VoZp zh*B;%+0?bFgE$uF*y+GKD6P41*N;UU)}<|X&SBNogxj=uhP8D8&P3agW-~3Xx`#`y zIk|#;-&nJMA}#Msy?^8OT@2H@A$3~LZJb2p=A)i;W8pS6-tQR}_OEXbX{o;|S+jiX z2-C3=XxsUCRJA~EaTUJ7ZfPwt)GM565&WEOBV=~xu68!0StlnYPV&r{y^^ezUi^bm z(hb)iTyCfPC+<4QNP?LtVG3fZPfjFFvgO*>``>wR>EzNTohKzHRNT|0+G3h-%3ybt%&-_2}2{wW&ttV;o+k z=4;%K)ulcz$*gnQt=`mw6A(`x2wkD&D6j*`?HW*1{J4-ju` zYBX0+S-SVZpU{N!t-D|zX&8lJ?cZ%*9nACK`R^!lT-NOKO9!VVG-YD{X7tXQ-Q>Nd zY(MKy3zeXJ8emuZ)_;9J%iTvoe6+}~)n(gO>@QPqV{bkPnM9-Gd&;R0wA$MCPv_;5 zj$1RK*2!h%2`j-(?Q^rHL`6I-Pk7k{6?_x^xD2b5nG4lVT!7?%sW(fsD$4GG?ls)K6(0 znyp((^oXu|Y`X7P7p>YAxD|Qb>{)~#Y($*ZZ`6LsLu;p>7=rY>T&zfy^+8Cm8h2E%QNRQ&l@=r#Z*^H