#include <avr/io.h>
#include <stdio.h>
+#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
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;
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;
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;
#include <stdbool.h>
-int main() {
+// For emu
+int __argc;
+char **__argv;
+
+
+int main(int argc, char *argv[]) {
+ __argc = argc;
+ __argv = argv;
+
wdt_enable(WDTO_250MS);
// Init
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
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
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
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
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()