(self)
| 400 | "".join(encoder_code).strip(), |
| 401 | "".join(output_code).strip()) |
| 402 | def generate_commands_code(self): |
| 403 | cmd_by_encid = { |
| 404 | self.msg_to_encid[self.messages_by_name.get(msgname, msgname)]: cmd |
| 405 | for msgname, cmd in self.commands.items() |
| 406 | } |
| 407 | max_cmd_encid = max(cmd_by_encid.keys()) |
| 408 | index = [] |
| 409 | externs = {} |
| 410 | for encoded_msgid in range(max_cmd_encid+1): |
| 411 | if encoded_msgid not in cmd_by_encid: |
| 412 | index.append(" {\n},") |
| 413 | continue |
| 414 | funcname, flags, msgname = cmd_by_encid[encoded_msgid] |
| 415 | msg = self.messages_by_name[msgname] |
| 416 | externs[funcname] = 1 |
| 417 | parsercode = self.build_parser(encoded_msgid, msg, 'response') |
| 418 | index.append(" {%s\n .flags=%s,\n .func=%s\n}," % ( |
| 419 | parsercode, flags, funcname)) |
| 420 | index = "".join(index).strip() |
| 421 | externs = "\n".join(["extern void "+funcname+"(uint32_t*);" |
| 422 | for funcname in sorted(externs)]) |
| 423 | fmt = """ |
| 424 | %s |
| 425 | |
| 426 | const struct command_parser command_index[] PROGMEM = { |
| 427 | %s |
| 428 | }; |
| 429 | |
| 430 | const uint16_t command_index_size PROGMEM = ARRAY_SIZE(command_index); |
| 431 | """ |
| 432 | return fmt % (externs, index) |
| 433 | def generate_param_code(self): |
| 434 | sorted_param_types = sorted( |
| 435 | [(i, a) for a, i in self.all_param_types.items()]) |
no test coverage detected