Add system properties.
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef __SYSTEM_PROPERTIES_H__
|
||||||
|
#define __SYSTEM_PROPERTIES_H__
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define SYSTEM_PROPERTY_USB_PROTOCOL_VERSION 1
|
||||||
|
#define SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION 1
|
||||||
|
#define SYSTEM_PROPERTY_DATA_MODEL_VERSION 1
|
||||||
|
#define SYSTEM_PROPERTY_FIRMWARE_VERSION 1
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,18 +1,41 @@
|
|||||||
#include "usb_protocol_handler.h"
|
#include "usb_protocol_handler.h"
|
||||||
|
#include "system_properties.h"
|
||||||
#include "test_led.h"
|
#include "test_led.h"
|
||||||
|
|
||||||
void GetProtocolVersion();
|
void SetError(uint8_t error);
|
||||||
|
void SetGenericError();
|
||||||
|
void UsbProtocolHandler();
|
||||||
|
void GetSystemProperty();
|
||||||
void JumpToBootloader();
|
void JumpToBootloader();
|
||||||
void GetSetTestLed();
|
void GetSetTestLed();
|
||||||
void WriteLedDriver();
|
void WriteLedDriver();
|
||||||
void ReadLedDriver();
|
void ReadLedDriver();
|
||||||
|
|
||||||
|
// Functions for setting error statuses
|
||||||
|
|
||||||
|
void SetError(uint8_t error) {
|
||||||
|
GenericHidOutBuffer[0] = error;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetGenericError()
|
||||||
|
{
|
||||||
|
SetError(PROTOCOL_RESPONSE_GENERIC_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set a single byte as the response.
|
||||||
|
void SetResponseByte(uint8_t response)
|
||||||
|
{
|
||||||
|
GenericHidOutBuffer[1] = response;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The main protocol handler function
|
||||||
|
|
||||||
void UsbProtocolHandler()
|
void UsbProtocolHandler()
|
||||||
{
|
{
|
||||||
uint8_t command = GenericHidInBuffer[0];
|
uint8_t command = GenericHidInBuffer[0];
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case USB_COMMAND_GET_PROTOCOL_VERSION:
|
case USB_COMMAND_GET_SYSTEM_PROPERTY:
|
||||||
GetProtocolVersion();
|
GetSystemProperty();
|
||||||
break;
|
break;
|
||||||
case USB_COMMAND_JUMP_TO_BOOTLOADER:
|
case USB_COMMAND_JUMP_TO_BOOTLOADER:
|
||||||
JumpToBootloader();
|
JumpToBootloader();
|
||||||
@@ -31,8 +54,28 @@ void UsbProtocolHandler()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetProtocolVersion() {
|
// Per command protocol command handlers
|
||||||
GenericHidOutBuffer[1] = 1;
|
|
||||||
|
void GetSystemProperty() {
|
||||||
|
uint8_t propertyId = GenericHidInBuffer[1];
|
||||||
|
|
||||||
|
switch (propertyId) {
|
||||||
|
case SYSTEM_PROPERTY_USB_PROTOCOL_VERSION_ID:
|
||||||
|
SetResponseByte(SYSTEM_PROPERTY_USB_PROTOCOL_VERSION);
|
||||||
|
break;
|
||||||
|
case SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION_ID:
|
||||||
|
SetResponseByte(SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION);
|
||||||
|
break;
|
||||||
|
case SYSTEM_PROPERTY_DATA_MODEL_VERSION_ID:
|
||||||
|
SetResponseByte(SYSTEM_PROPERTY_DATA_MODEL_VERSION);
|
||||||
|
break;
|
||||||
|
case SYSTEM_PROPERTY_FIRMWARE_VERSION_ID:
|
||||||
|
SetResponseByte(SYSTEM_PROPERTY_FIRMWARE_VERSION);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SetGenericError();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JumpToBootloader() {
|
void JumpToBootloader() {
|
||||||
|
|||||||
@@ -7,11 +7,18 @@
|
|||||||
|
|
||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define USB_COMMAND_GET_PROTOCOL_VERSION 0
|
#define PROTOCOL_RESPONSE_SUCCESS 0
|
||||||
#define USB_COMMAND_JUMP_TO_BOOTLOADER 1
|
#define PROTOCOL_RESPONSE_GENERIC_ERROR 1
|
||||||
#define USB_COMMAND_TEST_LED 2
|
|
||||||
#define USB_COMMAND_WRITE_LED_DRIVER 3
|
#define USB_COMMAND_GET_SYSTEM_PROPERTY 0
|
||||||
#define USB_COMMAND_READ_LED_DRIVER 4
|
#define SYSTEM_PROPERTY_USB_PROTOCOL_VERSION_ID 0
|
||||||
|
#define SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION_ID 1
|
||||||
|
#define SYSTEM_PROPERTY_DATA_MODEL_VERSION_ID 2
|
||||||
|
#define SYSTEM_PROPERTY_FIRMWARE_VERSION_ID 3
|
||||||
|
#define USB_COMMAND_JUMP_TO_BOOTLOADER 1
|
||||||
|
#define USB_COMMAND_TEST_LED 2
|
||||||
|
#define USB_COMMAND_WRITE_LED_DRIVER 3
|
||||||
|
#define USB_COMMAND_READ_LED_DRIVER 4
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user