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.
myrpc.cpp@0:441400ffd086, 2011-09-02 (annotated)
- Committer:
- geiineuville
- Date:
- Fri Sep 02 08:36:24 2011 +0000
- Revision:
- 0:441400ffd086
V0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
geiineuville | 0:441400ffd086 | 1 | // myrpc.cpp |
geiineuville | 0:441400ffd086 | 2 | // |
geiineuville | 0:441400ffd086 | 3 | // Based on: |
geiineuville | 0:441400ffd086 | 4 | // http://mbed.org/projects/cookbook/svn/Servo/trunk/Servo.h |
geiineuville | 0:441400ffd086 | 5 | // http://mbed.org/projects/cookbook/svn/Servo/trunk/Servo.cpp |
geiineuville | 0:441400ffd086 | 6 | // http://mbed.org/forum/topic/234/ |
geiineuville | 0:441400ffd086 | 7 | |
geiineuville | 0:441400ffd086 | 8 | #include "myrpc.h" |
geiineuville | 0:441400ffd086 | 9 | #ifdef MBED_RPC |
geiineuville | 0:441400ffd086 | 10 | #include "rpc.h" |
geiineuville | 0:441400ffd086 | 11 | #endif |
geiineuville | 0:441400ffd086 | 12 | |
geiineuville | 0:441400ffd086 | 13 | #include "SNTPClient.h" |
geiineuville | 0:441400ffd086 | 14 | |
geiineuville | 0:441400ffd086 | 15 | extern int gDebug; |
geiineuville | 0:441400ffd086 | 16 | |
geiineuville | 0:441400ffd086 | 17 | namespace mbed { |
geiineuville | 0:441400ffd086 | 18 | |
geiineuville | 0:441400ffd086 | 19 | myrpc::myrpc(PinName pin, const char *name) : Base(name), _pin(pin) {} |
geiineuville | 0:441400ffd086 | 20 | |
geiineuville | 0:441400ffd086 | 21 | void myrpc::debug(int val) { |
geiineuville | 0:441400ffd086 | 22 | gDebug=val; |
geiineuville | 0:441400ffd086 | 23 | printf("Debug is %s\r\n", gDebug ? "ON" : "OFF"); |
geiineuville | 0:441400ffd086 | 24 | } |
geiineuville | 0:441400ffd086 | 25 | |
geiineuville | 0:441400ffd086 | 26 | void myrpc::blink(int n) { |
geiineuville | 0:441400ffd086 | 27 | for (int i=0; i<n; i++) { |
geiineuville | 0:441400ffd086 | 28 | _pin = 1; |
geiineuville | 0:441400ffd086 | 29 | wait(0.2); |
geiineuville | 0:441400ffd086 | 30 | _pin = 0; |
geiineuville | 0:441400ffd086 | 31 | wait(0.2); |
geiineuville | 0:441400ffd086 | 32 | } |
geiineuville | 0:441400ffd086 | 33 | } |
geiineuville | 0:441400ffd086 | 34 | |
geiineuville | 0:441400ffd086 | 35 | char *myrpc::echo(const char * in) { |
geiineuville | 0:441400ffd086 | 36 | printf("DEBUG myrpc::echo() IN=%s\r\n",in); |
geiineuville | 0:441400ffd086 | 37 | sprintf(_buffer, "%s", in); |
geiineuville | 0:441400ffd086 | 38 | return _buffer; |
geiineuville | 0:441400ffd086 | 39 | } |
geiineuville | 0:441400ffd086 | 40 | |
geiineuville | 0:441400ffd086 | 41 | void myrpc::settime(const char *t) { |
geiineuville | 0:441400ffd086 | 42 | time_t seconds = time(NULL); |
geiineuville | 0:441400ffd086 | 43 | if (seconds == (unsigned)-1 || seconds == 0) { |
geiineuville | 0:441400ffd086 | 44 | seconds = 1256729737; // Set RTC time to Wed, 28 Oct 2009 11:35:37 |
geiineuville | 0:441400ffd086 | 45 | } |
geiineuville | 0:441400ffd086 | 46 | // set_time(seconds); |
geiineuville | 0:441400ffd086 | 47 | SNTPSetTime(seconds); |
geiineuville | 0:441400ffd086 | 48 | strftime(_buffer, sizeof(_buffer), "%A %m/%d/%Y %H:%M:%S", localtime(&seconds)); |
geiineuville | 0:441400ffd086 | 49 | printf("settime(%s) seconds=%d datetime=%s\r\n", t, seconds, _buffer); |
geiineuville | 0:441400ffd086 | 50 | } |
geiineuville | 0:441400ffd086 | 51 | char *myrpc::gettime(const char *fmt="%A %m/%d/%Y %H:%M:%S") { |
geiineuville | 0:441400ffd086 | 52 | // time_t seconds = time(NULL); |
geiineuville | 0:441400ffd086 | 53 | time_t seconds = SNTPTime(); |
geiineuville | 0:441400ffd086 | 54 | //printf("Time as seconds since January 1, 1970 = %d\r\n", seconds); |
geiineuville | 0:441400ffd086 | 55 | //printf("Time as a basic string = %s\r\n", ctime(&seconds)); |
geiineuville | 0:441400ffd086 | 56 | if (!fmt || !fmt[0]) |
geiineuville | 0:441400ffd086 | 57 | fmt = "%A %m/%d/%Y %H:%M:%S"; |
geiineuville | 0:441400ffd086 | 58 | strftime(_buffer, sizeof(_buffer), fmt, localtime(&seconds)); |
geiineuville | 0:441400ffd086 | 59 | return _buffer; |
geiineuville | 0:441400ffd086 | 60 | } |
geiineuville | 0:441400ffd086 | 61 | |
geiineuville | 0:441400ffd086 | 62 | #ifdef MBED_RPC |
geiineuville | 0:441400ffd086 | 63 | const rpc_method *myrpc::get_rpc_methods() { |
geiineuville | 0:441400ffd086 | 64 | static const rpc_method rpc_methods[] = { |
geiineuville | 0:441400ffd086 | 65 | { "debug", rpc_method_caller<myrpc, int, &myrpc::debug> }, |
geiineuville | 0:441400ffd086 | 66 | { "blink", rpc_method_caller<myrpc, int, &myrpc::blink> }, |
geiineuville | 0:441400ffd086 | 67 | { "echo", rpc_method_caller<char *, myrpc, const char *, &myrpc::echo> }, |
geiineuville | 0:441400ffd086 | 68 | { "settime", rpc_method_caller<myrpc, const char *, &myrpc::settime> }, |
geiineuville | 0:441400ffd086 | 69 | { "gettime", rpc_method_caller<char *, myrpc, const char *, &myrpc::gettime> }, |
geiineuville | 0:441400ffd086 | 70 | RPC_METHOD_SUPER(Base) |
geiineuville | 0:441400ffd086 | 71 | }; |
geiineuville | 0:441400ffd086 | 72 | return rpc_methods; |
geiineuville | 0:441400ffd086 | 73 | } |
geiineuville | 0:441400ffd086 | 74 | rpc_class *myrpc::get_rpc_class() { |
geiineuville | 0:441400ffd086 | 75 | static const rpc_function funcs[] = { |
geiineuville | 0:441400ffd086 | 76 | "new", rpc_function_caller<const char*, PinName, const char*, &Base::construct<myrpc,PinName,const char*> >, |
geiineuville | 0:441400ffd086 | 77 | RPC_METHOD_END |
geiineuville | 0:441400ffd086 | 78 | }; |
geiineuville | 0:441400ffd086 | 79 | static rpc_class c = { "myrpc", funcs, NULL }; |
geiineuville | 0:441400ffd086 | 80 | return &c; |
geiineuville | 0:441400ffd086 | 81 | } |
geiineuville | 0:441400ffd086 | 82 | #endif |
geiineuville | 0:441400ffd086 | 83 | |
geiineuville | 0:441400ffd086 | 84 | } // namespace mbed |