Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 8:ffe1815b6deb, committed 2020-04-17
- Comitter:
- mariob
- Date:
- Fri Apr 17 15:23:08 2020 +0000
- Parent:
- 7:f3ba13c6d56e
- Commit message:
- updated
Changed in this revision
--- a/main.cpp Thu Mar 07 15:44:53 2013 +0000
+++ b/main.cpp Fri Apr 17 15:23:08 2020 +0000
@@ -1,108 +1,105 @@
#include "mbed.h"
-#include "rtos.h"
#include "xbee.hpp"
#include "ssWiSocket.hpp"
-#define READ_FUNCTION_MS 1000
-#define WRITE_FUNCTION_MS 1000
-
-
+#define TARGET_ID 1
-struct Task {
- PortID _id;
- int _ratio;
- ssWiSocket* _s;
- int _val;
+int readValue = 0;
+int writtenValue = 0;
+
+void code_state(int);
- Task (PortID id, int ratio, int value) {
- _id = id;
- _ratio = ratio;
- _s = ssWiSocket::createSocket(id);
- _val = value;
- }
-};
+Thread readingThread;
+Thread writingThread;
-#define N_TASKS 4
-Task *task_array[N_TASKS];
-
+void readingFunction();
+void writingFunction();
-void readingFunction(const void* arg);
+//Serial pc(USBTX, USBRX, "pc", 9600);
-void writingFunction(const void* arg);
-
-
-
+#define UPDATE_RATE_MS 1000
int main()
{
- printf("\n\r************* CONFIG *************\n\r");
+
+ //pc.printf("\n\r************* CONFIG *************\n\r");
+
+code_state(0);
//radio module
XBeeModule xbee(p9, p10, 102, 14);
- XBeeAddress addr = xbee.getLocalAddress();
- printf("XBEE: src addr: %s,%s\n\r", addr.getHighAddr().c_str(), addr.getLowAddr().c_str());
+ //XBeeAddress addr = xbee.getLocalAddress();
+
+code_state(1);
+
xbee.setDstAddress(XBeeBroadcastAddress());
- XBeeAddress addr2 = xbee.getDstAddress();
- printf("XBEE: dts addr: %s,%s\n\r", addr2.getHighAddr().c_str(), addr2.getLowAddr().c_str());
- printf("XBEE: channel: %d\n\r", xbee.getChannel());
- printf("XBEE: pan id: %d\n\r", xbee.getPanID());
+
+code_state(2);
+
+ //XBeeAddress addr2(0, 0);
+ //xbee.getDstAddress(addr2);
+ //xbee.getChannel();
+ //xbee.getPanID();
//wireless network
xbee.init(5, 10);
srand(time(0));
- printf("\n\r************* READ *************\n\r");
+code_state(4);
- //tasks
- task_array[0] = new Task(10, 3, ((double)rand()/RAND_MAX)*20);
- task_array[1] = new Task(15, 5, ((double)rand()/RAND_MAX)*30);
- task_array[2] = new Task(100, 7, ((double)rand()/RAND_MAX)*25);
- task_array[3] = new Task(120, 4, ((double)rand()/RAND_MAX)*65);
+ thread_sleep_for(UPDATE_RATE_MS);
-/*
//thread
- Thread readingThread(readingFunction);
- Thread writingThread(writingFunction);
-*/
- RtosTimer reader (readingFunction, osTimerPeriodic, NULL);
- RtosTimer writer (writingFunction, osTimerPeriodic, NULL);
+ readingThread.start(readingFunction);
+ writingThread.start(writingFunction);
- reader.start(1000);
- writer.start(1000);
+ while (true) {
+ //code_state(writtenValue);
+ //thread_sleep_for(UPDATE_RATE_MS);
+ code_state(readValue);
+ thread_sleep_for(UPDATE_RATE_MS);
+ }
- printf("\n\r************* START *************\n\r");
-
- Thread::wait(osWaitForever);
+ return 0;
}
-
+#define READ_FUNCTION_MS 1000
+#define WRITE_FUNCTION_MS 3000
-void readingFunction(const void* arg)
+#define PORT_ID_TARGET_1 2
+#define PORT_ID_TARGET_2 10
+
+void readingFunction()
{
- static int vals[N_TASKS];
-// while(1) {
- for (int i=0; i<N_TASKS; i++) {
- if (vals[i]!=task_array[i]->_s->read()) {
- vals[i] = task_array[i]->_s->read();
- printf("%ld: Read[%d] = %d\n\r", time(0), task_array[i]->_id, task_array[i]->_s->read());
- }
+ PortID id = TARGET_ID == 1 ? PORT_ID_TARGET_1 : PORT_ID_TARGET_2;
+ ssWiSocket* s = ssWiSocket::createSocket(id);
+
+ while (1) {
+ readValue = s->read();
+ thread_sleep_for(READ_FUNCTION_MS);
}
-// Thread::wait(READ_FUNCTION_MS);
-// }
}
-void writingFunction(const void* arg)
-{
- static int x = 1;
-// while(1) {
- for (int i=0; i<N_TASKS; i++)
- if (x%(task_array[i]->_ratio)==0) {
- task_array[i]->_s->write(task_array[i]->_val++);
- printf("%ld: Write[%d] = %d\n\r", time(0), task_array[i]->_id, task_array[i]->_val);
- }
- x++;
-// Thread::wait(WRITE_FUNCTION_MS);
-// }
+void writingFunction() {
+ PortID id = TARGET_ID == 1 ? PORT_ID_TARGET_2 : PORT_ID_TARGET_1;
+ ssWiSocket* s = ssWiSocket::createSocket(id);
+
+ writtenValue = TARGET_ID == 1 ? 3 : 0;
+
+ while (1) {
+ s->write(writtenValue++);
+ thread_sleep_for(WRITE_FUNCTION_MS);
+ }
}
+
+void code_state(int val) {
+ static DigitalOut led1(LED1);
+ static DigitalOut led2(LED2);
+ static DigitalOut led3(LED3);
+
+ led1 = val % 2;
+ led2 = (val >> 1) % 2;
+ led3 = (val >> 2) % 2;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Fri Apr 17 15:23:08 2020 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#565ab149819481224ab43f878c3921b14b11d180
--- a/mbed-rtos.lib Thu Mar 07 15:44:53 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/mbed_official/code/mbed-rtos/#9654a71f5a90
--- a/mbed.bld Thu Mar 07 15:44:53 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/cd19af002ccc \ No newline at end of file
--- a/ssWi.lib Thu Mar 07 15:44:53 2013 +0000 +++ b/ssWi.lib Fri Apr 17 15:23:08 2020 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mariob/code/ssWi/#b50c3b3b241c +http://mbed.org/users/mariob/code/ssWi/#36931ee9af85