From: Joseph Coffland Date: Mon, 18 Feb 2019 07:28:48 +0000 (-0800) Subject: Support fast emu demo mode X-Git-Url: https://git.buildbotics.com/?a=commitdiff_plain;h=a21e29d3b9203bfff302ca488aa723976726d8ae;p=bbctrl-firmware Support fast emu demo mode --- diff --git a/src/avr/emu/src/emu.c b/src/avr/emu/src/emu.c index 8224c10..c420758 100644 --- a/src/avr/emu/src/emu.c +++ b/src/avr/emu/src/emu.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -52,10 +53,14 @@ void __RTC_OVF_vect(); // RTC tick void motor_emulate_steps(int motor); +extern int __argc; +extern char **__argv; + volatile uint8_t io_mem[4096] = {0}; +bool fast = false; int serialByte = -1; uint8_t i2cData[I2C_MAX_DATA]; int i2cIndex = 0; @@ -68,6 +73,10 @@ void sei() {} void emu_init() { + // Parse command line args + for (int i = 0; i < __argc; i++) + if (strcmp(__argv[i], "--fast") == 0) fast = true; + // Mark clocks ready OSC.STATUS = OSC_XOSCRDY_bm | OSC_PLLRDY_bm | OSC_RC32KRDY_bm; @@ -83,7 +92,7 @@ void emu_callback() { if (RST.CTRL == RST_SWRST_bm) exit(0); - struct timeval t = {0, 0}; // 1000}; + struct timeval t = {0, fast ? 0 : 1000}; bool readData = true; while (readData) { readData = false; diff --git a/src/avr/src/main.c b/src/avr/src/main.c index 7908fc6..d363ea2 100644 --- a/src/avr/src/main.c +++ b/src/avr/src/main.c @@ -50,7 +50,15 @@ #include -int main() { +// For emu +int __argc; +char **__argv; + + +int main(int argc, char *argv[]) { + __argc = argc; + __argv = argv; + wdt_enable(WDTO_250MS); // Init diff --git a/src/py/bbctrl/APIHandler.py b/src/py/bbctrl/APIHandler.py index 6b58359..10bde7b 100644 --- a/src/py/bbctrl/APIHandler.py +++ b/src/py/bbctrl/APIHandler.py @@ -39,7 +39,7 @@ log.setLevel(logging.DEBUG) class APIHandler(RequestHandler): def __init__(self, app, request, **kwargs): - super(APIHandler, self).__init__(app, request, **kwargs) + super().__init__(app, request, **kwargs) self.ctrl = app.ctrl diff --git a/src/py/bbctrl/AVREmu.py b/src/py/bbctrl/AVREmu.py index 71f6d33..f06add3 100644 --- a/src/py/bbctrl/AVREmu.py +++ b/src/py/bbctrl/AVREmu.py @@ -75,7 +75,10 @@ class AVREmu(object): os.close(stdoutFDs[1]) os.close(i2cFDs[0]) - os.execvp('bbemu', ('bbemu',)) + cmd = ['bbemu'] + if self.ctrl.args.fast_emu: cmd.append('--fast') + + os.execvp(cmd[0], cmd) os._exit(1) # In case of failure # Parent diff --git a/src/py/bbctrl/Web.py b/src/py/bbctrl/Web.py index 0fc1fb3..5e30ee8 100644 --- a/src/py/bbctrl/Web.py +++ b/src/py/bbctrl/Web.py @@ -87,7 +87,7 @@ class RebootHandler(bbctrl.APIHandler): class LogHandler(tornado.web.RequestHandler): def __init__(self, app, request, **kwargs): - super(LogHandler, self).__init__(app, request, **kwargs) + super().__init__(app, request, **kwargs) self.filename = app.ctrl.args.log @@ -105,7 +105,7 @@ class LogHandler(tornado.web.RequestHandler): class BugReportHandler(tornado.web.RequestHandler): def __init__(self, app, request, **kwargs): - super(BugReportHandler, self).__init__(app, request, **kwargs) + super().__init__(app, request, **kwargs) self.app = app diff --git a/src/py/bbctrl/__init__.py b/src/py/bbctrl/__init__.py index 4eb9d61..70f63be 100644 --- a/src/py/bbctrl/__init__.py +++ b/src/py/bbctrl/__init__.py @@ -124,6 +124,8 @@ def parse_args(): help = 'Camera frame format') parser.add_argument('--demo', action = 'store_true', help = 'Enter demo mode') + parser.add_argument('--fast-emu', action = 'store_true', + help = 'Enter demo mode') return parser.parse_args()