Skip to content

Commit db7de4d

Browse files
committed
Add PowerSaveMode sample.
1 parent 7c8efb8 commit db7de4d

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

examples/PowerSave/PowerSave.ino

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#include <SakuraIO.h>
2+
3+
//SakuraIO_SPI sakuraio(10);
4+
SakuraIO_I2C sakuraio;
5+
6+
void setup() {
7+
Serial.begin(9600);
8+
Serial.print("Waiting to come online");
9+
for(;;){
10+
if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break;
11+
Serial.print(".");
12+
delay(1000);
13+
}
14+
Serial.println("");
15+
16+
//Setting PowerSaveMode
17+
uint8_t ret;
18+
Serial.print("Set PowerSaveMode to ");
19+
Serial.println(POWER_SAVE_MODE_AUTO_SLEEP);
20+
ret = sakuraio.setPowerSaveMode(POWER_SAVE_MODE_AUTO_SLEEP);
21+
if (ret != 0x01) {
22+
Serial.print(" FAILED ret=");
23+
Serial.println(ret);
24+
}
25+
ret = sakuraio.getPowerSaveMode();
26+
Serial.print("getPowerSaveMode(): ");
27+
Serial.println(ret);
28+
}
29+
30+
uint8_t counter = 0;
31+
32+
void loop() {
33+
counter++;
34+
35+
Serial.println("");
36+
Serial.println(counter);
37+
38+
uint8_t request[33] = {};
39+
uint8_t response[33] = {};
40+
41+
// Echoback
42+
request[0] = counter;
43+
sakuraio.echoback(1, request, response);
44+
Serial.print(request[0]);
45+
Serial.print(" -> ");
46+
Serial.println(response[0]);
47+
48+
// Unixtime
49+
uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime()/1000UL);
50+
Serial.print("Unixtime ");
51+
Serial.println(unixtime);
52+
53+
// ProductID
54+
uint16_t pid = sakuraio.getProductID();
55+
Serial.print("PID ");
56+
Serial.println(pid);
57+
58+
// UniqueID
59+
sakuraio.getUniqueID((char *)response);
60+
Serial.print("UID ");
61+
Serial.println((char *)response);
62+
63+
// Version
64+
sakuraio.getFirmwareVersion((char *)response);
65+
Serial.print("Ver ");
66+
Serial.println((char *)response);
67+
68+
// Connection Status
69+
uint8_t connectionStatus = sakuraio.getConnectionStatus();
70+
Serial.print("Status ");
71+
Serial.println(connectionStatus);
72+
73+
//getSignalQuality
74+
uint8_t signalQuality = sakuraio.getSignalQuality();
75+
Serial.print("Quality ");
76+
Serial.println(signalQuality);
77+
78+
79+
// Tx Queue
80+
uint8_t ret;
81+
ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter);
82+
Serial.print("Enqueue ");
83+
Serial.println(ret);
84+
85+
uint8_t avail;
86+
uint8_t queued;
87+
sakuraio.getTxQueueLength(&avail, &queued);
88+
Serial.print("Tx Available=");
89+
Serial.print(avail);
90+
Serial.print(" Queued=");
91+
Serial.println(queued);
92+
93+
if(queued >= 30){
94+
ret = sakuraio.clearTx();
95+
Serial.print("Clear ");
96+
Serial.println(ret);
97+
}else if(queued >= 5){
98+
ret = sakuraio.send();
99+
Serial.print("Send ");
100+
Serial.println(ret);
101+
}
102+
103+
// Rx Queue
104+
sakuraio.getRxQueueLength(&avail, &queued);
105+
Serial.print("Rx Available=");
106+
Serial.print(avail);
107+
Serial.print(" Queued=");
108+
Serial.println(queued);
109+
110+
for(uint8_t i=0; i<queued; i++){
111+
uint8_t channel;
112+
uint8_t type;
113+
uint8_t values[8];
114+
int64_t offset;
115+
ret = sakuraio.dequeueRx(&channel, &type, values, &offset);
116+
Serial.print("Dequeue ");
117+
Serial.print(ret);
118+
if(ret == 0x01){
119+
Serial.print(" ch="); Serial.print(channel);
120+
Serial.print(" type="); Serial.print((char)type);
121+
Serial.print(" values=[");
122+
for(uint8_t b=0; b<7; b++){
123+
Serial.print(values[b]);
124+
Serial.print(" ");
125+
}
126+
Serial.print(values[7]);
127+
Serial.print("] offset="); Serial.println((int32_t)offset);
128+
}else{
129+
Serial.println(" ERROR");
130+
}
131+
}
132+
133+
delay(5000);
134+
}

0 commit comments

Comments
 (0)