Maniacbug's RF24 arduino library ported to mbed. Tested, it works for Nucleo F411
Dependents: RF24Network_Send RF24Network_Receive maple_chotobot_rf_motores Thesis_Verzender ... more
Sync.h@5:b1110d26a900, 2016-04-21 (annotated)
- Committer:
- akashvibhute
- Date:
- Thu Apr 21 04:10:31 2016 +0000
- Revision:
- 5:b1110d26a900
- Parent:
- 4:75c5aa56411f
Library re-ported with all the latest and greatest stuff from Manicbug; Synced with TMRh20's RF24 library on Apr/18/2015 from https://github.com/TMRh20
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akashvibhute | 0:c3db0798d9aa | 1 | /* |
akashvibhute | 0:c3db0798d9aa | 2 | Copyright (C) 2011 J. Coliz <maniacbug@ymail.com> |
akashvibhute | 0:c3db0798d9aa | 3 | |
akashvibhute | 0:c3db0798d9aa | 4 | This program is free software; you can redistribute it and/or |
akashvibhute | 0:c3db0798d9aa | 5 | modify it under the terms of the GNU General Public License |
akashvibhute | 0:c3db0798d9aa | 6 | version 2 as published by the Free Software Foundation. |
akashvibhute | 0:c3db0798d9aa | 7 | */ |
akashvibhute | 4:75c5aa56411f | 8 | |
akashvibhute | 4:75c5aa56411f | 9 | /* |
akashvibhute | 4:75c5aa56411f | 10 | * Mbed support added by Akash Vibhute <akash.roboticist@gmail.com> |
akashvibhute | 4:75c5aa56411f | 11 | * Porting completed on Nov/05/2015 |
akashvibhute | 4:75c5aa56411f | 12 | * |
akashvibhute | 4:75c5aa56411f | 13 | * Updated 1: Synced with TMRh20's RF24 library on Nov/04/2015 from https://github.com/TMRh20 |
akashvibhute | 4:75c5aa56411f | 14 | * Updated 2: Synced with TMRh20's RF24 library on Apr/18/2015 from https://github.com/TMRh20 |
akashvibhute | 4:75c5aa56411f | 15 | * |
akashvibhute | 4:75c5aa56411f | 16 | */ |
akashvibhute | 4:75c5aa56411f | 17 | |
akashvibhute | 5:b1110d26a900 | 18 | |
akashvibhute | 0:c3db0798d9aa | 19 | #ifndef __SYNC_H__ |
akashvibhute | 0:c3db0798d9aa | 20 | #define __SYNC_H__ |
akashvibhute | 0:c3db0798d9aa | 21 | |
akashvibhute | 0:c3db0798d9aa | 22 | // STL headers |
akashvibhute | 0:c3db0798d9aa | 23 | // C headers |
akashvibhute | 0:c3db0798d9aa | 24 | #include <stdlib.h> |
akashvibhute | 0:c3db0798d9aa | 25 | #include <string.h> |
akashvibhute | 0:c3db0798d9aa | 26 | // Framework headers |
akashvibhute | 0:c3db0798d9aa | 27 | // Library headers |
akashvibhute | 0:c3db0798d9aa | 28 | #include <RF24Network_config.h> |
akashvibhute | 0:c3db0798d9aa | 29 | // Project headers |
akashvibhute | 0:c3db0798d9aa | 30 | |
akashvibhute | 0:c3db0798d9aa | 31 | class RF24Network; |
akashvibhute | 0:c3db0798d9aa | 32 | |
akashvibhute | 0:c3db0798d9aa | 33 | /** |
akashvibhute | 0:c3db0798d9aa | 34 | * Synchronizes a shared set of variables between multiple nodes |
akashvibhute | 0:c3db0798d9aa | 35 | */ |
akashvibhute | 0:c3db0798d9aa | 36 | |
akashvibhute | 0:c3db0798d9aa | 37 | class Sync |
akashvibhute | 0:c3db0798d9aa | 38 | { |
akashvibhute | 0:c3db0798d9aa | 39 | private: |
akashvibhute | 0:c3db0798d9aa | 40 | RF24Network& network; |
akashvibhute | 0:c3db0798d9aa | 41 | uint8_t* app_data; /**< Application's copy of the data */ |
akashvibhute | 0:c3db0798d9aa | 42 | uint8_t* internal_data; /**< Our copy of the data */ |
akashvibhute | 0:c3db0798d9aa | 43 | size_t len; /**< Length of the data in bytes */ |
akashvibhute | 0:c3db0798d9aa | 44 | uint16_t to_node; /**< The other node we're syncing with */ |
akashvibhute | 0:c3db0798d9aa | 45 | |
akashvibhute | 0:c3db0798d9aa | 46 | protected: |
akashvibhute | 0:c3db0798d9aa | 47 | public: |
akashvibhute | 0:c3db0798d9aa | 48 | /** |
akashvibhute | 0:c3db0798d9aa | 49 | * Constructor |
akashvibhute | 0:c3db0798d9aa | 50 | * |
akashvibhute | 0:c3db0798d9aa | 51 | * @param _network Which network to syncrhonize over |
akashvibhute | 0:c3db0798d9aa | 52 | */ |
akashvibhute | 0:c3db0798d9aa | 53 | Sync(RF24Network& _network): network(_network), app_data(NULL), |
akashvibhute | 0:c3db0798d9aa | 54 | internal_data(NULL), len(0), to_node(0) |
akashvibhute | 0:c3db0798d9aa | 55 | { |
akashvibhute | 0:c3db0798d9aa | 56 | } |
akashvibhute | 0:c3db0798d9aa | 57 | /** |
akashvibhute | 0:c3db0798d9aa | 58 | * Begin the object |
akashvibhute | 0:c3db0798d9aa | 59 | * |
akashvibhute | 0:c3db0798d9aa | 60 | * @param _to_node Which node we are syncing with |
akashvibhute | 0:c3db0798d9aa | 61 | */ |
akashvibhute | 0:c3db0798d9aa | 62 | void begin(uint16_t _to_node) |
akashvibhute | 0:c3db0798d9aa | 63 | { |
akashvibhute | 0:c3db0798d9aa | 64 | to_node = _to_node; |
akashvibhute | 0:c3db0798d9aa | 65 | } |
akashvibhute | 0:c3db0798d9aa | 66 | /** |
akashvibhute | 0:c3db0798d9aa | 67 | * Declare the shared data set |
akashvibhute | 0:c3db0798d9aa | 68 | * |
akashvibhute | 0:c3db0798d9aa | 69 | * @param _data Location of shared data to be syncrhonized |
akashvibhute | 0:c3db0798d9aa | 70 | */ |
akashvibhute | 0:c3db0798d9aa | 71 | template <class T> |
akashvibhute | 0:c3db0798d9aa | 72 | void register_me(T& _data) |
akashvibhute | 0:c3db0798d9aa | 73 | { |
akashvibhute | 0:c3db0798d9aa | 74 | app_data = reinterpret_cast<uint8_t*>(&_data); |
akashvibhute | 0:c3db0798d9aa | 75 | len = sizeof(_data); |
akashvibhute | 0:c3db0798d9aa | 76 | internal_data = reinterpret_cast<uint8_t*>(malloc(len)); |
akashvibhute | 0:c3db0798d9aa | 77 | reset(); |
akashvibhute | 0:c3db0798d9aa | 78 | } |
akashvibhute | 0:c3db0798d9aa | 79 | |
akashvibhute | 0:c3db0798d9aa | 80 | /** |
akashvibhute | 0:c3db0798d9aa | 81 | * Reset the internal copy of the shared data set |
akashvibhute | 0:c3db0798d9aa | 82 | */ |
akashvibhute | 0:c3db0798d9aa | 83 | void reset(void) |
akashvibhute | 0:c3db0798d9aa | 84 | { |
akashvibhute | 0:c3db0798d9aa | 85 | memcpy(internal_data,app_data,len); |
akashvibhute | 0:c3db0798d9aa | 86 | } |
akashvibhute | 0:c3db0798d9aa | 87 | |
akashvibhute | 0:c3db0798d9aa | 88 | /** |
akashvibhute | 0:c3db0798d9aa | 89 | * Update the network and the shared data set |
akashvibhute | 0:c3db0798d9aa | 90 | */ |
akashvibhute | 0:c3db0798d9aa | 91 | void update(void); |
akashvibhute | 0:c3db0798d9aa | 92 | }; |
akashvibhute | 0:c3db0798d9aa | 93 | |
akashvibhute | 0:c3db0798d9aa | 94 | #endif // __SYNC_H__ |
akashvibhute | 0:c3db0798d9aa | 95 | // vim:cin:ai:sts=2 sw=2 ft=cpp |
akashvibhute | 4:75c5aa56411f | 96 | |
akashvibhute | 4:75c5aa56411f | 97 |