MicroShellというライブラリのバッファ編集機能に惹かれて強引にSerialクラスっぽくラップしたもの

https://www.cubeatsystems.com/microshell/index.html 様に感謝 やっつけすぎて申し訳ないが技量が足りない...

Committer:
beingblock
Date:
Thu Oct 19 07:39:57 2017 +0000
Revision:
0:ff53d8f5146a
??

Who changed what in which revision?

UserRevisionLine numberNew contents of line
beingblock 0:ff53d8f5146a 1 #include "MicroShell.h"
beingblock 0:ff53d8f5146a 2 #include "core/microshell.h"
beingblock 0:ff53d8f5146a 3
beingblock 0:ff53d8f5146a 4 Serial *msh_con = NULL;
beingblock 0:ff53d8f5146a 5 MICROSHELL msh_struct;
beingblock 0:ff53d8f5146a 6 MSCORE_ACTION msh_action;
beingblock 0:ff53d8f5146a 7
beingblock 0:ff53d8f5146a 8 void msh_putc(char c)
beingblock 0:ff53d8f5146a 9 {
beingblock 0:ff53d8f5146a 10 msh_con -> putc(c);
beingblock 0:ff53d8f5146a 11 }
beingblock 0:ff53d8f5146a 12 char msh_getc(void)
beingblock 0:ff53d8f5146a 13 {
beingblock 0:ff53d8f5146a 14 return msh_con -> getc();
beingblock 0:ff53d8f5146a 15 }
beingblock 0:ff53d8f5146a 16 void msh_act_hook(MSCORE_ACTION action)
beingblock 0:ff53d8f5146a 17 {
beingblock 0:ff53d8f5146a 18 msh_action = action;
beingblock 0:ff53d8f5146a 19 }
beingblock 0:ff53d8f5146a 20
beingblock 0:ff53d8f5146a 21 MicroShell::MicroShell(PinName tx, PinName rx, int baud)
beingblock 0:ff53d8f5146a 22 {
beingblock 0:ff53d8f5146a 23 if(msh_con==NULL) {
beingblock 0:ff53d8f5146a 24 msh_con = new Serial(tx,rx,baud);
beingblock 0:ff53d8f5146a 25 microshell_init(&msh_struct, msh_putc, msh_getc, msh_act_hook);
beingblock 0:ff53d8f5146a 26 }
beingblock 0:ff53d8f5146a 27 }
beingblock 0:ff53d8f5146a 28 void MicroShell::putc(int c)
beingblock 0:ff53d8f5146a 29 {
beingblock 0:ff53d8f5146a 30 msh_putc(c);
beingblock 0:ff53d8f5146a 31 }
beingblock 0:ff53d8f5146a 32 void MicroShell::puts(const char *s)
beingblock 0:ff53d8f5146a 33 {
beingblock 0:ff53d8f5146a 34 while (*s) {
beingblock 0:ff53d8f5146a 35 msh_putc(*s++);
beingblock 0:ff53d8f5146a 36 }
beingblock 0:ff53d8f5146a 37 }
beingblock 0:ff53d8f5146a 38 int MicroShell::getc()
beingblock 0:ff53d8f5146a 39 {
beingblock 0:ff53d8f5146a 40 return msh_getc();
beingblock 0:ff53d8f5146a 41 }
beingblock 0:ff53d8f5146a 42 char *MicroShell::gets(char *s, int size)
beingblock 0:ff53d8f5146a 43 {
beingblock 0:ff53d8f5146a 44 return microshell_getline(&msh_struct, s, size);
beingblock 0:ff53d8f5146a 45 }
beingblock 0:ff53d8f5146a 46 int MicroShell::printf(const char* format, ...)
beingblock 0:ff53d8f5146a 47 {
beingblock 0:ff53d8f5146a 48 int ret;
beingblock 0:ff53d8f5146a 49 va_list args;
beingblock 0:ff53d8f5146a 50 va_start(args, format);
beingblock 0:ff53d8f5146a 51 ret = msh_con -> vprintf(format, args);
beingblock 0:ff53d8f5146a 52 va_end(args);
beingblock 0:ff53d8f5146a 53 return ret;
beingblock 0:ff53d8f5146a 54 }
beingblock 0:ff53d8f5146a 55 int MicroShell::scanf(const char* format, ...)
beingblock 0:ff53d8f5146a 56 {
beingblock 0:ff53d8f5146a 57 char buf[256];
beingblock 0:ff53d8f5146a 58 microshell_getline(&msh_struct, buf, sizeof(buf));
beingblock 0:ff53d8f5146a 59
beingblock 0:ff53d8f5146a 60 int ret;
beingblock 0:ff53d8f5146a 61 va_list args;
beingblock 0:ff53d8f5146a 62 va_start(args, format);
beingblock 0:ff53d8f5146a 63 ret = vsscanf(buf, format, args);
beingblock 0:ff53d8f5146a 64 va_end(args);
beingblock 0:ff53d8f5146a 65 return ret;
beingblock 0:ff53d8f5146a 66 }
beingblock 0:ff53d8f5146a 67 int MicroShell::vprintf(const char* format, std::va_list args)
beingblock 0:ff53d8f5146a 68 {
beingblock 0:ff53d8f5146a 69 int ret;
beingblock 0:ff53d8f5146a 70 ret = msh_con -> vprintf(format, args);
beingblock 0:ff53d8f5146a 71 return ret;
beingblock 0:ff53d8f5146a 72 }
beingblock 0:ff53d8f5146a 73 int MicroShell::vscanf(const char* format, std::va_list args)
beingblock 0:ff53d8f5146a 74 {
beingblock 0:ff53d8f5146a 75 char buf[256];
beingblock 0:ff53d8f5146a 76 microshell_getline(&msh_struct, buf, sizeof(buf));
beingblock 0:ff53d8f5146a 77
beingblock 0:ff53d8f5146a 78 int ret;
beingblock 0:ff53d8f5146a 79 ret = vsscanf(buf, format, args);
beingblock 0:ff53d8f5146a 80 return ret;
beingblock 0:ff53d8f5146a 81 }