/// Pack the ep0 input buffer with a response to REQ_INFO void fillInfoStruct(void){ BootloaderInfo *i=(BootloaderInfo*)ep0_buf_in; i->magic[0] = 0x90; i->magic[1] = 0x90; i->magic[2] = 0xBB; i->magic[3] = 0x01; i->version = 1; i->DEVID0 = MCU.DEVID0; i->DEVID1 = MCU.DEVID1; i->DEVID2 = MCU.DEVID2; i->REVID = MCU.REVID; i->page_size = APP_SECTION_PAGE_SIZE; i->app_section_end = APP_SECTION_END; i->entry_jmp_pointer = (uint32_t) (unsigned) &enterBootloader; strncpy(i->hw_product, xstringify(HW_PRODUCT), 16); strncpy(i->hw_version, xstringify(HW_VERSION), 16); }
const char *get_svn_revision(void) { return xstringify(SVNVERSION); }
ADCA.CH3.CTRL = ADC_CH_INPUTMODE_DIFFWGAIN_gc | ADC_CH_GAIN_2X_gc; // channel B stream I ADCA.CH0.MUXCTRL = ADC_CH_MUXNEG_PIN5_gc | ADC_CH_MUXPOS_PIN1_gc; // 1.25VREF vs VS-A ADCA.CH1.MUXCTRL = ADC_CH_MUXNEG_PIN4_gc | ADC_CH_MUXPOS_PIN2_gc; // INTGND vs ADC-A ADCA.CH2.MUXCTRL = ADC_CH_MUXNEG_PIN4_gc | ADC_CH_MUXPOS_PIN6_gc; // INTGND vs ADC-B ADCA.CH3.MUXCTRL = ADC_CH_MUXNEG_PIN5_gc | ADC_CH_MUXPOS_PIN7_gc; // 1.25VREF vs VS-B NVM.CMD = NVM_CMD_READ_CALIB_ROW_gc; // apply the factory-programmed calibration values ADCA.CALL = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, ADCACAL0)); NVM.CMD = NVM_CMD_READ_CALIB_ROW_gc; ADCA.CALH = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, ADCACAL1)); ADCA.CTRLA = ADC_ENABLE_bm; } #define xstringify(s) stringify(s) #define stringify(s) #s const char PROGMEM hwversion[] = xstringify(HW_VERSION); const char PROGMEM fwversion[] = xstringify(FW_VERSION); uint8_t usb_cmd = 0; uint8_t cmd_data = 0; /** Event handler for the library USB Control Request reception event. */ bool EVENT_USB_Device_ControlRequest(USB_Request_Header_t* req){ usb_cmd = 0; if ((req->bmRequestType & CONTROL_REQTYPE_TYPE) == REQTYPE_VENDOR){ switch(req->bRequest){ case 0x00: // Info if (req->wIndex == 0){ USB_ep0_send_progmem((uint8_t*)hwversion, sizeof(hwversion)); }else if (req->wIndex == 1){ USB_ep0_send_progmem((uint8_t*)fwversion, sizeof(fwversion));
const char* get_git_revision(void) { return xstringify(GITVERSION); }