Merge pull request #1057 from priyadi/selectable_output
	
		
	
				
					
				
			Implement runtime selectable output (USB or BT)pull/1073/head 0.5.10
						commit
						0c2b6951a6
					
				@ -0,0 +1,56 @@
 | 
				
			||||
/*
 | 
				
			||||
Copyright 2017 Priyadi Iman Nurcahyo
 | 
				
			||||
This program is free software: you can redistribute it and/or modify
 | 
				
			||||
it under the terms of the GNU General Public License as published by
 | 
				
			||||
the Free Software Foundation, either version 2 of the License, or
 | 
				
			||||
(at your option) any later version.
 | 
				
			||||
This program is distributed in the hope that it will be useful,
 | 
				
			||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||
GNU General Public License for more details.
 | 
				
			||||
You should have received a copy of the GNU General Public License
 | 
				
			||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||
*/
 | 
				
			||||
 | 
				
			||||
#include "lufa.h"
 | 
				
			||||
#include "outputselect.h"
 | 
				
			||||
#ifdef ADAFRUIT_BLE_ENABLE
 | 
				
			||||
    #include "adafruit_ble.h"
 | 
				
			||||
#endif
 | 
				
			||||
 | 
				
			||||
uint8_t desired_output = OUTPUT_DEFAULT;
 | 
				
			||||
 | 
				
			||||
void set_output(uint8_t output) {
 | 
				
			||||
    set_output_user(output);
 | 
				
			||||
    desired_output = output;
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
__attribute__((weak))
 | 
				
			||||
void set_output_user(uint8_t output) {
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
uint8_t auto_detect_output(void) {
 | 
				
			||||
    if (USB_DeviceState == DEVICE_STATE_Configured) {
 | 
				
			||||
        return OUTPUT_USB;
 | 
				
			||||
    }
 | 
				
			||||
 | 
				
			||||
#ifdef ADAFRUIT_BLE_ENABLE
 | 
				
			||||
    if (adafruit_ble_is_connected()) {
 | 
				
			||||
        return OUTPUT_ADAFRUIT_BLE;
 | 
				
			||||
    }
 | 
				
			||||
#endif
 | 
				
			||||
 | 
				
			||||
#ifdef BLUETOOTH_ENABLE
 | 
				
			||||
    return OUTPUT_BLUETOOTH; // should check if BT is connected here
 | 
				
			||||
#endif
 | 
				
			||||
 | 
				
			||||
    return OUTPUT_NONE;
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
uint8_t where_to_send(void) {
 | 
				
			||||
    if (desired_output == OUTPUT_AUTO) {
 | 
				
			||||
        return auto_detect_output();
 | 
				
			||||
    }
 | 
				
			||||
    return desired_output;
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
@ -0,0 +1,41 @@
 | 
				
			||||
/*
 | 
				
			||||
Copyright 2017 Priyadi Iman Nurcahyo
 | 
				
			||||
This program is free software: you can redistribute it and/or modify
 | 
				
			||||
it under the terms of the GNU General Public License as published by
 | 
				
			||||
the Free Software Foundation, either version 2 of the License, or
 | 
				
			||||
(at your option) any later version.
 | 
				
			||||
This program is distributed in the hope that it will be useful,
 | 
				
			||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||
GNU General Public License for more details.
 | 
				
			||||
You should have received a copy of the GNU General Public License
 | 
				
			||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||
*/
 | 
				
			||||
 | 
				
			||||
enum outputs {
 | 
				
			||||
    OUTPUT_AUTO,
 | 
				
			||||
 | 
				
			||||
    OUTPUT_NONE,
 | 
				
			||||
    OUTPUT_USB,
 | 
				
			||||
    OUTPUT_BLUETOOTH,
 | 
				
			||||
    OUTPUT_ADAFRUIT_BLE,
 | 
				
			||||
 | 
				
			||||
    // backward compatibility
 | 
				
			||||
    OUTPUT_USB_AND_BT
 | 
				
			||||
};
 | 
				
			||||
 | 
				
			||||
/**
 | 
				
			||||
 * backward compatibility for BLUETOOTH_ENABLE, send to BT and USB by default
 | 
				
			||||
 */
 | 
				
			||||
#ifndef OUTPUT_DEFAULT
 | 
				
			||||
    #ifdef BLUETOOTH_ENABLE
 | 
				
			||||
        #define OUTPUT_DEFAULT OUTPUT_USB_AND_BT
 | 
				
			||||
    #else
 | 
				
			||||
        #define OUTPUT_DEFAULT OUTPUT_AUTO
 | 
				
			||||
    #endif
 | 
				
			||||
#endif
 | 
				
			||||
 | 
				
			||||
void set_output(uint8_t output);
 | 
				
			||||
void set_output_user(uint8_t output);
 | 
				
			||||
uint8_t auto_detect_output(void);
 | 
				
			||||
uint8_t where_to_send(void);
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue