File tree Expand file tree Collapse file tree 6 files changed +13
-7
lines changed Expand file tree Collapse file tree 6 files changed +13
-7
lines changed Original file line number Diff line number Diff line change 1111 "url" : " https://github.com/eigen-value" ,
1212 "maintainer" : true
1313 },
14- "version" : " 0.1.1 " ,
14+ "version" : " 0.1.2 " ,
1515 "license" : " MIT" ,
1616 "frameworks" : " arduino" ,
1717 "platforms" : " *" ,
Original file line number Diff line number Diff line change 11name =Arduino_RPClite
2- version =0.1.1
2+ version =0.1.2
33author =Lucio Rossi (eigen-value)
44maintainer =Lucio Rossi (eigen-value)
55sentence =A MessagePack RPC library for Arduino
Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ class SerialTransport: public ITransport {
2121 size_t write (const uint8_t * data, size_t size) override {
2222 _stream->write (data, size);
2323 return size;
24- }
24+ }
2525
2626 size_t read (uint8_t * buffer, size_t size) override {
2727 _stream->setTimeout (0 );
Original file line number Diff line number Diff line change @@ -37,7 +37,6 @@ class RPCClient {
3737
3838 // blocking call
3939 while (!get_response (result)){
40- // delay(1);
4140 }
4241
4342 return (lastError.code == NO_ERR);
Original file line number Diff line number Diff line change @@ -163,8 +163,17 @@ class RpcDecoder {
163163
164164 inline bool buffer_empty () const { return _bytes_stored == 0 ;}
165165
166+ // This is a blocking send, under the assumption _transport.write will always succeed eventually
166167 inline size_t send (const uint8_t * data, const size_t size) {
167- return _transport.write (data, size);
168+
169+ size_t offset = 0 ;
170+
171+ while (offset < size) {
172+ size_t bytes_written = _transport.write (data + offset, size - offset);
173+ offset += bytes_written;
174+ }
175+
176+ return offset;
168177 }
169178
170179 size_t pop_packet (uint8_t * buffer, size_t buffer_size) {
Original file line number Diff line number Diff line change @@ -35,13 +35,11 @@ class RPCServer {
3535 get_rpc ();
3636 process_request ();
3737 send_response ();
38- // delay(1);
3938 }
4039
4140 bool get_rpc () {
4241 decoder->decode ();
4342 if (_rpc_size > 0 ) return true ; // Already have a request
44- // TODO USE A QUEUE
4543 _rpc_size = decoder->get_request (_rpc_buffer, RPC_BUFFER_SIZE);
4644 return _rpc_size > 0 ;
4745 }
You can’t perform that action at this time.
0 commit comments