diff --git a/ShofEL2-for-T124/payloads/payload.c b/ShofEL2-for-T124/payloads/payload.c index 04ca7e6..191b8c1 100644 --- a/ShofEL2-for-T124/payloads/payload.c +++ b/ShofEL2-for-T124/payloads/payload.c @@ -17,20 +17,43 @@ int mystrlen(char *data) { return i-1; } -#define usb_log(msg, error) usb_write(msg, mystrlen(msg), error); +void usb_log(char * msg, uint32_t * error){ + usb_write(msg, mystrlen(msg), error); +} + +// #define usb_log(msg, error) usb_write(msg, mystrlen(msg), error); __attribute__((section(".init"))) void payload_main() { uint32_t error_code; - uint32_t data = 0xdeadbeef; - u32 num_xfer; - u32 to_send; + uint32_t mem_off; + uint32_t mem_sz; + uint32_t blk_sz; + char data[12]; u8 *buffer = (u8*)0x40020000; - uint32_t test = 1; - - while (1) { - usb_write(&test, sizeof(test), &num_xfer ); - test += 1; + + usb_log("cmd_handler", &error_code); + while(1){ + usb_read(&data, 4, &error_code); + if(data[0] == 'M' && data[1] == 'E' && data[2] == 'M' && data[3] == 'D') { + usb_write(&data, 4, &error_code); + usb_read(&data, 8,&error_code); // Receive uint64_t size and and uint32_t offset + mem_off = *(uint32_t *)data; + mem_sz = *(uint32_t *)(data+4); + for(unsigned int i=0;i