thijse / Arduino-CmdMessenger

CmdMessenger Communication library for Arduino & .NET
Other
206 stars 86 forks source link

Platformio+Digispark compatible solution #31

Open dontsovcmc opened 6 years ago

dontsovcmc commented 6 years ago

I want to use CmdMessenger with Digispark attiny85.

They have their own Stream class, Print classes.. .

  1. First of all I add some functions to Stream class.

    int timedRead()
    virtual size_t readBytes(char *buffer, size_t length)
  2. I spend a lot of time to find a problem why CmdMessenger can't hear me (only UnknownCommand handler called) ... (I connect Arduino to COM port and want to send-receive bytes in Terminal)

I was angry when I found solution:

Send command 0 
30 3B
Receive command 1
01 2C 33 3B

Digispark made print function without default argument=DEC... for all types except char.. For compatible we should add DEC everywhere in CmdMessenger :(.

comms->print(cmdId, DEC);

and etc

  1. Attiny85 doesn't want to start with CmdMessenger cause little memory. I change defines:
    #define MAXCALLBACKS        5   // The maximum number of commands   (default: 50) 
    #define MESSENGERBUFFERSIZE 20   // The length of the commandbuffer  (default: 64)
    #define MAXSTREAMBUFFERSIZE 20  // The length of the streambuffer   (default: 64)

    and it works fine :)

There was difficult to find solutions cause:

  1. There is no protocol description or trace. Please add them.
  2. There is no tests written on "C" or "Python" :)
dontsovcmc commented 6 years ago

There are errors in Platformio libraries for "digispark-tiny" platform :(