@@ -63,7 +63,7 @@ double sensor_emu = 0;
6363
6464#define def_prim (function_name, type ) \
6565 Type function_name##_type = type; \
66- bool function_name (Module *m)
66+ bool function_name ([[maybe_unused]] Module *m)
6767
6868#define def_prim_reverse (function_name ) \
6969 void function_name##_reverse(Module *m, \
@@ -270,7 +270,8 @@ def_prim(test, oneToNoneU32) {
270270 Callback c = Callback (m, topic, fidx);
271271 CallbackHandler::add_callback (c);
272272 auto *payload = reinterpret_cast <const unsigned char *>(" TestPayload" );
273- CallbackHandler::push_event (topic, (const char *)payload, 11 );
273+ CallbackHandler::push_event (topic, reinterpret_cast <const char *>(payload),
274+ 11 );
274275 pop_args (1 );
275276 return true ;
276277}
@@ -318,11 +319,11 @@ def_prim(wifi_connected, NoneToOneU32) {
318319
319320def_prim (wifi_localip, twoToOneU32) {
320321 uint32_t buff = arg1.uint32 ;
321- uint32_t size = arg0.uint32 ;
322+ // uint32_t size = arg0.uint32; // never used in emulator
322323 std::string ip = " 192.168.0.181" ;
323324
324325 for (unsigned long i = 0 ; i < ip.length (); i++) {
325- m->memory .bytes [buff + i] = ( uint32_t ) ip[i];
326+ m->memory .bytes [buff + i] = * reinterpret_cast < uint8_t *>(& ip[i]) ;
326327 }
327328 pop_args (2 );
328329 pushInt32 (buff);
@@ -345,7 +346,8 @@ def_prim(http_get, fourToOneU32) {
345346 return false ; // TRAP
346347 }
347348 for (unsigned long i = 0 ; i < answer.length (); i++) {
348- m->memory .bytes [response + i] = (uint32_t )answer[i];
349+ m->memory .bytes [response + i] =
350+ *reinterpret_cast <unsigned char *>(&answer[i]);
349351 }
350352
351353 // Pop args and return response address
@@ -365,7 +367,7 @@ def_prim(http_post, tenToOneU32) {
365367 uint32_t authorization = arg3.uint32 ;
366368 uint32_t authorization_len = arg2.uint32 ;
367369 int32_t response = arg1.uint32 ;
368- uint32_t size = arg0.uint32 ;
370+ // uint32_t size = arg0.uint32; // never used in emulator
369371
370372 std::string url_parsed = parse_utf8_string (m->memory .bytes , url_len, url);
371373 std::string body_parsed =
@@ -398,14 +400,14 @@ def_prim(chip_digital_write, twoToNoneU32) {
398400}
399401
400402def_prim (chip_digital_read, oneToOneU32) {
401- uint8_t pin = arg0.uint32 ;
403+ // uint8_t pin = arg0.uint32; // never used in emulator
402404 pop_args (1 );
403405 pushUInt32 (1 ); // HIGH
404406 return true ;
405407}
406408
407409def_prim (chip_analog_read, oneToOneI32) {
408- uint8_t pin = arg0.uint32 ;
410+ // uint8_t pin = arg0.uint32; // never used in emulator
409411 pop_args (1 );
410412 pushInt32 (sin (sensor_emu) * 100 );
411413 sensor_emu += .25 ;
@@ -460,11 +462,11 @@ def_prim(write_spi_bytes_16, twoToNoneU32) {
460462def_prim (subscribe_interrupt, threeToNoneU32) {
461463 uint8_t pin = arg2.uint32 ; // GPIOPin
462464 uint8_t tidx = arg1.uint32 ; // Table Idx pointing to Callback function
463- uint8_t mode = arg0.uint32 ;
465+ // uint8_t mode = arg0.uint32; // never used in emulator
464466
465467 debug (" EMU: subscribe_interrupt(%u, %u, %u) \n " , pin, tidx, mode);
466468
467- if (tidx < 0 || m->table .size < tidx) {
469+ if (m->table .size < tidx) {
468470 debug (" subscribe_interrupt: out of range table index %i\n " , tidx);
469471 return false ;
470472 }
@@ -554,6 +556,7 @@ void install_primitives() {
554556// ------------------------------------------------------
555557// resolving the primitives
556558// ------------------------------------------------------
559+ // ReSharper disable once CppDFAConstantFunctionResult
557560bool resolve_primitive (char *symbol, Primitive *val) {
558561 debug (" Resolve primitives (%d) for %s \n " , ALL_PRIMITIVES, symbol);
559562
@@ -566,34 +569,35 @@ bool resolve_primitive(char *symbol, Primitive *val) {
566569 }
567570 }
568571 FATAL (" Could not find primitive %s \n " , symbol);
569- return false ;
572+ // return false; // unreachable
570573}
571574
572575Memory external_mem{};
573576
577+ // ReSharper disable once CppDFAConstantFunctionResult
574578bool resolve_external_memory (char *symbol, Memory **val) {
575579 if (!strcmp (symbol, " memory" )) {
576580 if (external_mem.bytes == nullptr ) {
577581 external_mem.initial = 256 ;
578582 external_mem.maximum = 256 ;
579583 external_mem.pages = 256 ;
580- external_mem.bytes = ( uint8_t *) acalloc (
581- external_mem.pages * PAGE_SIZE, sizeof (uint32_t ),
582- " Module->memory.bytes primitive" );
584+ external_mem.bytes = static_cast < uint8_t *> (
585+ acalloc ( external_mem.pages * PAGE_SIZE, sizeof (uint32_t ),
586+ " Module->memory.bytes primitive" ) );
583587 }
584588 *val = &external_mem;
585589 return true ;
586590 }
587591
588592 FATAL (" Could not find memory %s \n " , symbol);
589- return false ;
593+ // return false; // unreachable
590594}
591595
592596// ------------------------------------------------------
593597// Restore external state when restoring a snapshot
594598// ------------------------------------------------------
595599void restore_external_state (Module *m,
596- std::vector<IOStateElement> external_state) {
600+ const std::vector<IOStateElement> & external_state) {
597601 uint8_t opcode = *m->pc_ptr ;
598602 // TODO: Maybe primitives can also be called using the other call
599603 // instructions such as call_indirect
@@ -617,7 +621,7 @@ void restore_external_state(Module *m,
617621 }
618622}
619623
620- std::vector<IOStateElement *> get_io_state (Module *m ) {
624+ std::vector<IOStateElement *> get_io_state (Module *) {
621625 std::vector<IOStateElement *> ioState;
622626 for (auto &primitive : primitives) {
623627 if (primitive.f_serialize_state ) {
0 commit comments