All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
vexctl.h
Go to the documentation of this file.
1 /*-----------------------------------------------------------------------------*/
2 /* */
3 /* Copyright (c) James Pearman */
4 /* 2013 */
5 /* All Rights Reserved */
6 /* */
7 /*-----------------------------------------------------------------------------*/
8 /* */
9 /* Module: vexctl.h */
10 /* Author: James Pearman */
11 /* Created: 7 May 2013 */
12 /* */
13 /* Revisions: */
14 /* V1.00 4 July 2013 - Initial release */
15 /* */
16 /*-----------------------------------------------------------------------------*/
17 /* */
18 /* This file is part of ConVEX. */
19 /* */
20 /* The author is supplying this software for use with the VEX cortex */
21 /* control system. ConVEX is free software; you can redistribute it */
22 /* and/or modify it under the terms of the GNU General Public License */
23 /* as published by the Free Software Foundation; either version 3 of */
24 /* the License, or (at your option) any later version. */
25 /* */
26 /* ConVEX is distributed in the hope that it will be useful, */
27 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
28 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
29 /* GNU General Public License for more details. */
30 /* */
31 /* You should have received a copy of the GNU General Public License */
32 /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
33 /* */
34 /* A special exception to the GPL can be applied should you wish to */
35 /* distribute a combined work that includes ConVEX, without being obliged */
36 /* to provide the source code for any proprietary components. */
37 /* See the file exception.txt for full details of how and when the */
38 /* exception can be applied. */
39 /* */
40 /* The author can be contacted on the vex forums as jpearman */
41 /* or electronic mail using jbpearman_at_mac_dot_com */
42 /* Mentor for team 8888 RoboLancers, Pasadena CA. */
43 /* */
44 /*-----------------------------------------------------------------------------*/
45 
46 #ifndef __VEXCTL__
47 #define __VEXCTL__
48 
49 /*-----------------------------------------------------------------------------*/
50 /** @file vexctl.h
51  * @brief Extract data from SPI data received from master processor
52 *//*---------------------------------------------------------------------------*/
53 
54 /*-----------------------------------------------------------------------------*/
55 /** @brief controller button and analog control definitions */
56 /** @note loosely follows the ROBOTC definition of the same functions */
57 /*-----------------------------------------------------------------------------*/
58 /** @details
59  * These are the constants that are used in the call to vexControllerGet.
60  * They follow the format that ROBOTC uses in its call to vexRT[], however,
61  * there are a few additions to allow multiple buttons to be checked.
62  */
63 typedef enum {
64  Ch1 = 0, Ch2, Ch3, Ch4,
72 
81 } tCtlIndex;
82 
83 /*-----------------------------------------------------------------------------*/
84 /** @brief Various competition and controller flags */
85 /*-----------------------------------------------------------------------------*/
86 typedef enum {
87  kFlagNoXmiters = 0, // No transmitters connected
88  kFlagXmit1 = 0x01, // 1 == Transmitter 1 connected
89  kFlagXmit2 = 0x02, // 1 == Transmitter 2 connected
90  kFlagBit2 = 0x04, // Unused
91  kFlagCompetitionSwitch = 0x08, // 0 == No Comp Switch 1 == Competition Switch attached.
92  kFlagResetSlave = 0x10, // Unused
93  kFlagGameController = 0x20, // 0 == Legacy75MHz, 1 == Game Controller
94  kFlagAutonomousMode = 0x40, // 0 == Driver Control, 1 == Autonomous Mode
95  kFlagDisabled = 0x80, // 0 == Enabled 1 == Disabled.
97 
98 
99 #ifdef __cplusplus
100 extern "C" {
101 #endif
102 
103 int16_t vexControllerGet( tCtlIndex index );
104 int16_t vexControllerCompetitionStateSet( uint16_t ctl, int16_t mask );
105 uint16_t vexControllerCompetitonState(void);
106 void vexControllerReleaseWait( tCtlIndex index );
107 
108 #ifdef __cplusplus
109 }
110 #endif
111 
112 #endif // __VEXCTL__