diff LoadFile/load.dfu @ 449:45feb80a2ad1

Major USB update, fixes most (if not all) known issues USB - General - Refactored descriptors - Enabled/Disable USB endpoints - Added debug flags for special features - Code cleanup - Interface count calculation based off of enabled endpoints - Delayed wTotalLength calculation to simplify descriptor offsets - Re-ordered endpoints and interfaces - Added more debug output - Added usbInitTime to show how long keyboard initialization took (Useful when debugging bad init sequences) - Added function for usb_resume() which takes care of the resume sequence * Resume is now only called if packets are starting to timeout USB - Special Options - Added enableDeviceRestartOnUSBTimeout * A last resort hammer for bad USB Chipsets/OSs, don't use if you can help it * Disabled - Added enableUSBResume * Enables host resume wake-up signalling, required to wake a computer from sleep * Enabled - Added enableUSBLowPowerNegotiation * Enables power negotiation hack * Required to use firmware with an IPad and other hard-limit low-power USB hosts * Hasn't been tested with the recent changes * Disabled - Added enableUSBSuspend * Enables power down events on host USB bus suspend * Enabled USB - Keyboard - Attempted to cleanup HID SET_REPORT * Works much better * Still has an issue under Linux which generates *a lot* of NAKs (initializes quickly regardless) + Not present on other keyboards + SETUP -> OUT -> IN : This sequence is the problem + Specifically during the OUT phase - Enabled USB - CDC Virtual Serial Port - Code cleanup - Added convenience struct USBCDCLineCoding for easier debugging - Attempted to cleanup CDC_SET_LING_CODING * Works much better * Still has an issue under Linux which generates *a lot* of NAKs (initializes quickly regardless) + SETUP -> OUT -> IN : This sequence is the problem + Specifically during the OUT phase + Likely the same issues as HID SET_REPORT - Enabled USB - Mouse - Enabled USB - Joystick - Disabled USB - RawIO - Initial code, API not used yet - Disabled DFU - Updated load script, now faster
author Jacob Alexander <haata@kiibohd.com>
date Tue, 31 May 2016 00:19:45 -0700
parents 99f93dec8fea
children
line wrap: on
line diff
--- a/LoadFile/load.dfu	Sun May 29 10:27:21 2016 -0700
+++ b/LoadFile/load.dfu	Tue May 31 00:19:45 2016 -0700
@@ -2,8 +2,9 @@
 # Convenience script for loading firmware onto a dfu type device
 # By default, initiates dfu-util
 
-SERIAL_PORT=""
-AUTO_SCREEN_SESSION=""
+SERIAL_PORT="/dev/kiibohd"
+AUTO_SCREEN_SESSION="/dev/kiibohd"
+NOSCREEN=0
 PROG_NAME=$(basename $0)
 
 # Parse all the command line arguments
@@ -19,6 +20,10 @@
 		SERIAL_PORT="$2"
 		shift
 		;;
+	-n|--noscreen)
+		NOSCREEN=1
+		shift
+		;;
 	-h|--help)
 		echo "Usage: $PROG_NAME [options...]"
 		echo ""
@@ -49,12 +54,19 @@
 if [[ "$SERIAL_PORT" != "" ]] && [[ -e "$SERIAL_PORT" ]]; then
 	echo "NOTE: This may fail if the uC is in a bad state or does not support remote flashing"
 	printf "reload\r" > $SERIAL_PORT
-	sleep 2
 fi
 
 # Load via dfu-util
 # Used for McHCK based uCs
 if type dfu-util &>/dev/null; then
+	# Wait for device to appear
+	while true; do
+		dfu-util -l | grep -q "Kiibohd DFU"
+		if [ $? -eq 0 ]; then
+			break
+		fi
+		sleep 0.1
+	done
 	dfu-util -D @TARGET_BIN@
 	EXIT_STATUS=$?
 else
@@ -63,9 +75,12 @@
 fi
 
 # Load Screen Session if specified
-if (( "$EXIT_STATUS" == "0" )) && [[ "$AUTO_SCREEN_SESSION" != "" ]]; then
+if (( "$EXIT_STATUS" == "0" )) && [[ "$AUTO_SCREEN_SESSION" != "" ]] && [[ $NOSCREEN -ne 1 ]]; then
 	if type screen &>/dev/null; then
-		sleep 0.1
+		# Wait for interface
+		while [ ! -e $AUTO_SCREEN_SESSION ]; do
+			sleep 0.1
+		done
 		screen $AUTO_SCREEN_SESSION
 	else
 		echo "screen is not installed"