LRSD stephane / Mbed 2 deprecated WEBserver0-lrsd

Dependencies:   mbed

Committer:
geiineuville
Date:
Fri Sep 02 08:36:24 2011 +0000
Revision:
0:441400ffd086
V0

Who changed what in which revision?

UserRevisionLine numberNew 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