diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2021-05-08 13:38:43 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2021-05-08 13:38:43 +0200 |
| commit | 8b7b9c9e0a3f0a2f2c5ff4d516a640002b5f1891 (patch) | |
| tree | a3015db67227edc97b9ed8876e809832ef43d7ed /src | |
| parent | 66ba2be4eda2b0d8a5642390c3df4a11d95e3a71 (diff) | |
Add scenarios tool
Diffstat (limited to 'src')
| -rw-r--r-- | src/scenarios.cc | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/scenarios.cc b/src/scenarios.cc new file mode 100644 index 0000000..7f6185f --- /dev/null +++ b/src/scenarios.cc @@ -0,0 +1,82 @@ +#include <rapidjson/document.h> +#include <rapidjson/filewritestream.h> +#include <rapidjson/writer.h> + +#include <cstdio> +#include <iostream> +#include <time.h> +#include <sstream> + + +#define RAND(min,max) (rand()%(max-min)+min) + +using namespace std; +using namespace rapidjson; + +#define N_NODE 10 +#define EXTENDED false +#define SIMULATION_DURATION 60 +#define POWER_OFF 0 +#define POWER_ON 10 +#define POWER_RX 11 +#define POWER_TX 12 +#define DATA_SIZE 50 +#define USE_HINT false +#define WAKE_UP_EVERY 10 +#define WAKE_UP_FOR 5 +#define MAX_STARTUP_DELAY 10 + +unsigned int seed = 0; + +int main(int argc, char **argv){ + // Setup seed + if(argc>1){ + srand( atoi(argv[1]) ); + } + + // Create document + Document d; + d.SetObject(); + d.AddMember("extended",EXTENDED,d.GetAllocator()); + + // Create nodes + Value nodes(kObjectType); + for(int i=0;i<N_NODE;i++){ + Value node(kObjectType); + node.SetObject(); + node.AddMember("use_hint",USE_HINT,d.GetAllocator()); + node.AddMember("power_off",POWER_OFF,d.GetAllocator()); + node.AddMember("power_on",POWER_ON,d.GetAllocator()); + node.AddMember("power_rx",POWER_RX,d.GetAllocator()); + node.AddMember("power_tx",POWER_TX,d.GetAllocator()); + node.AddMember("is_sender",i==0,d.GetAllocator()); + node.AddMember("data_size",DATA_SIZE,d.GetAllocator()); + + // Setup ts and durations + Value ts(kArrayType); + Value duration(kArrayType); + for(unsigned int i=(RAND(0,MAX_STARTUP_DELAY));(i+WAKE_UP_FOR)<SIMULATION_DURATION;i+=WAKE_UP_EVERY){ + ts.PushBack(Value().SetDouble(i),d.GetAllocator()); + duration.PushBack(Value().SetDouble(WAKE_UP_FOR),d.GetAllocator()); + } + node.AddMember("wake_ts",ts,d.GetAllocator()); + node.AddMember("wake_duration",duration,d.GetAllocator()); + + + // Add node to nodes + std::ostringstream ss; + ss<< "on" <<i; + Value key(ss.str().c_str(), d.GetAllocator()); + nodes.AddMember(key,node,d.GetAllocator()); + } + d.AddMember("nodes",nodes,d.GetAllocator()); + + + // Write to stdout + StringBuffer buffer; + Writer<StringBuffer> writer(buffer); + d.Accept(writer); + cout << buffer.GetString(); + + return 0; +}
\ No newline at end of file |
