47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
|
#include "Arduino.h"
|
||
|
|
||
|
void usbHostPower(UsbHostPower_t mode){
|
||
|
static UsbHostPower_t m = USB_HOST_POWER_OFF;
|
||
|
if(m == mode){
|
||
|
return;
|
||
|
}
|
||
|
if(mode == USB_HOST_POWER_OFF){
|
||
|
digitalWrite(LIMIT_EN, LOW);
|
||
|
if(m == USB_HOST_POWER_VBUS){
|
||
|
digitalWrite(DEV_VBUS_EN, LOW);
|
||
|
} else if(m == USB_HOST_POWER_BAT){
|
||
|
digitalWrite(BOOST_EN, LOW);
|
||
|
}
|
||
|
} else if(mode == USB_HOST_POWER_VBUS){
|
||
|
if(m == USB_HOST_POWER_BAT){
|
||
|
digitalWrite(BOOST_EN, LOW);
|
||
|
}
|
||
|
digitalWrite(DEV_VBUS_EN, HIGH);
|
||
|
} else if(mode == USB_HOST_POWER_BAT){
|
||
|
if(m == USB_HOST_POWER_VBUS){
|
||
|
digitalWrite(DEV_VBUS_EN, LOW);
|
||
|
}
|
||
|
digitalWrite(BOOST_EN, HIGH);
|
||
|
}
|
||
|
if(mode != USB_HOST_POWER_OFF){
|
||
|
digitalWrite(LIMIT_EN, HIGH);
|
||
|
}
|
||
|
m = mode;
|
||
|
}
|
||
|
|
||
|
void usbHostEnable(bool enable){
|
||
|
digitalWrite(USB_HOST_EN, enable);
|
||
|
}
|
||
|
|
||
|
extern "C" void initVariant(void){
|
||
|
// Route USB to Device Side
|
||
|
pinMode(BOOST_EN, OUTPUT); digitalWrite(BOOST_EN, LOW);
|
||
|
pinMode(LIMIT_EN, OUTPUT); digitalWrite(LIMIT_EN, LOW);
|
||
|
pinMode(DEV_VBUS_EN, OUTPUT); digitalWrite(DEV_VBUS_EN, LOW);
|
||
|
pinMode(USB_HOST_EN, OUTPUT); digitalWrite(USB_HOST_EN, LOW);
|
||
|
|
||
|
// Turn Off LCD
|
||
|
pinMode(LCD_RST, OUTPUT); digitalWrite(LCD_RST, LOW);
|
||
|
pinMode(LCD_BL, OUTPUT); digitalWrite(LCD_BL, LOW);
|
||
|
}
|