From 27896984f70185ca49d24153a89e8037186b59fb Mon Sep 17 00:00:00 2001 From: thomasclark Date: Fri, 9 May 2014 15:11:56 -0400 Subject: [PATCH] Added the new NI shared libraries and headers Change-Id: I090f2ebe35b65aa323a97ce2ba0154d044e1b4c2 --- .../ChipObject/FRC_FPGA_ChipObject_Aliases.h | 20 +- .../RoboRIO_FRC_ChipObject_Aliases.h | 18 +- hal/lib/Athena/ChipObject/nInterfaceGlobals.h | 30 +- hal/lib/Athena/ChipObject/printFpgaVersion.h | 84 +-- hal/lib/Athena/ChipObject/tAI.h | 286 +++++----- hal/lib/Athena/ChipObject/tAO.h | 100 ++-- hal/lib/Athena/ChipObject/tAccel.h | 164 +++--- hal/lib/Athena/ChipObject/tAccumulator.h | 174 +++--- hal/lib/Athena/ChipObject/tAlarm.h | 114 ++-- hal/lib/Athena/ChipObject/tAnalogTrigger.h | 258 ++++----- hal/lib/Athena/ChipObject/tBIST.h | 180 +++---- hal/lib/Athena/ChipObject/tCounter.h | 438 ++++++++-------- hal/lib/Athena/ChipObject/tDIO.h | 496 +++++++++--------- hal/lib/Athena/ChipObject/tDMA.h | 376 ++++++------- hal/lib/Athena/ChipObject/tDMAManager.h | 92 ++-- hal/lib/Athena/ChipObject/tEncoder.h | 398 +++++++------- hal/lib/Athena/ChipObject/tGlobal.h | 208 ++++---- hal/lib/Athena/ChipObject/tInterrupt.h | 186 +++---- hal/lib/Athena/ChipObject/tInterruptManager.h | 122 ++--- hal/lib/Athena/ChipObject/tPWM.h | 222 ++++---- hal/lib/Athena/ChipObject/tPower.h | 214 ++++---- hal/lib/Athena/ChipObject/tRelay.h | 136 ++--- hal/lib/Athena/ChipObject/tSPI.h | 136 ++--- hal/lib/Athena/ChipObject/tSolenoid.h | 50 ++ hal/lib/Athena/ChipObject/tSysWatchdog.h | 202 +++---- hal/lib/Athena/ChipObject/tSystem.h | 94 ++-- hal/lib/Athena/ChipObject/tSystemInterface.h | 52 +- hal/lib/Athena/ChipObject/tWatchdog.h | 108 ++++ .../NetworkCommunication/AICalibration.h | 38 +- .../NetworkCommunication/CANInterfacePlugin.h | 122 ++--- hal/lib/Athena/NetworkCommunication/FRCComm.h | 402 +++++++------- .../NetworkCommunication/JaguarCANDriver.h | 112 ++-- hal/lib/Athena/NetworkCommunication/LoadOut.h | 104 ++-- .../NetworkCommunication/UsageReporting.h | 278 +++++----- hal/lib/Athena/i2clib/i2c-lib.h | 18 +- hal/lib/Athena/i2clib/i2clib/environs.h | 132 ++--- hal/lib/Athena/spilib/spi-lib.h | 24 +- ni-libraries/libFRC_FPGA_ChipObject.so.1 | Bin 388000 -> 388000 bytes ni-libraries/libFRC_NetworkCommunication.so.1 | Bin 495300 -> 495532 bytes ni-libraries/libRoboRIO_FRC_ChipObject.so.1 | Bin 363224 -> 367752 bytes ni-libraries/libi2c.so.1 | Bin ni-libraries/libspi.so.1 | Bin wpilibc/include/CAN/JaguarCANDriver.h | 87 +-- .../NetworkCommunication/AICalibration.h | 38 +- .../NetworkCommunication/CANInterfacePlugin.h | 61 +++ .../include/NetworkCommunication/FRCComm.h | 394 +++++++------- .../NetworkCommunication/JaguarCANDriver.h | 56 ++ .../include/NetworkCommunication/LoadOut.h | 91 ++-- .../NetworkCommunication/UsageReporting.h | 274 +++++----- 49 files changed, 3777 insertions(+), 3412 deletions(-) create mode 100644 hal/lib/Athena/ChipObject/tSolenoid.h create mode 100644 hal/lib/Athena/ChipObject/tWatchdog.h mode change 100644 => 100755 ni-libraries/libFRC_FPGA_ChipObject.so.1 mode change 100644 => 100755 ni-libraries/libFRC_NetworkCommunication.so.1 mode change 100644 => 100755 ni-libraries/libRoboRIO_FRC_ChipObject.so.1 mode change 100644 => 100755 ni-libraries/libi2c.so.1 mode change 100644 => 100755 ni-libraries/libspi.so.1 create mode 100644 wpilibc/include/NetworkCommunication/CANInterfacePlugin.h create mode 100644 wpilibc/include/NetworkCommunication/JaguarCANDriver.h diff --git a/hal/lib/Athena/ChipObject/FRC_FPGA_ChipObject_Aliases.h b/hal/lib/Athena/ChipObject/FRC_FPGA_ChipObject_Aliases.h index ef129fa116..e177ac2de1 100644 --- a/hal/lib/Athena/ChipObject/FRC_FPGA_ChipObject_Aliases.h +++ b/hal/lib/Athena/ChipObject/FRC_FPGA_ChipObject_Aliases.h @@ -1,10 +1,10 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __FRC_FPGA_ChipObject_Aliases_h__ -#define __FRC_FPGA_ChipObject_Aliases_h__ - -#define nInvariantFPGANamespace nFRC_C0EF_1_1_0 -#define nRuntimeFPGANamespace nFRC_2012_1_6_4 - -#endif // __FRC_FPGA_ChipObject_Aliases_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __FRC_FPGA_ChipObject_Aliases_h__ +#define __FRC_FPGA_ChipObject_Aliases_h__ + +#define nInvariantFPGANamespace nFRC_C0EF_1_1_0 +#define nRuntimeFPGANamespace nFRC_2012_1_6_4 + +#endif // __FRC_FPGA_ChipObject_Aliases_h__ diff --git a/hal/lib/Athena/ChipObject/RoboRIO_FRC_ChipObject_Aliases.h b/hal/lib/Athena/ChipObject/RoboRIO_FRC_ChipObject_Aliases.h index 4706240b1f..be207c77f1 100644 --- a/hal/lib/Athena/ChipObject/RoboRIO_FRC_ChipObject_Aliases.h +++ b/hal/lib/Athena/ChipObject/RoboRIO_FRC_ChipObject_Aliases.h @@ -1,9 +1,9 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __RoboRIO_FRC_ChipObject_Aliases_h__ -#define __RoboRIO_FRC_ChipObject_Aliases_h__ - -#define nRoboRIO_FPGANamespace nFRC_2015_1_0_4 - -#endif // __RoboRIO_FRC_ChipObject_Aliases_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __RoboRIO_FRC_ChipObject_Aliases_h__ +#define __RoboRIO_FRC_ChipObject_Aliases_h__ + +#define nRoboRIO_FPGANamespace nFRC_2015_1_0_5 + +#endif // __RoboRIO_FRC_ChipObject_Aliases_h__ diff --git a/hal/lib/Athena/ChipObject/nInterfaceGlobals.h b/hal/lib/Athena/ChipObject/nInterfaceGlobals.h index d04a310d8e..a10713dae5 100644 --- a/hal/lib/Athena/ChipObject/nInterfaceGlobals.h +++ b/hal/lib/Athena/ChipObject/nInterfaceGlobals.h @@ -1,15 +1,15 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_nInterfaceGlobals_h__ -#define __nFRC_2015_1_0_4_nInterfaceGlobals_h__ - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - extern unsigned int g_currentTargetClass; -} -} - -#endif // __nFRC_2015_1_0_4_nInterfaceGlobals_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_nInterfaceGlobals_h__ +#define __nFRC_2015_1_0_5_nInterfaceGlobals_h__ + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + extern unsigned int g_currentTargetClass; +} +} + +#endif // __nFRC_2015_1_0_5_nInterfaceGlobals_h__ diff --git a/hal/lib/Athena/ChipObject/printFpgaVersion.h b/hal/lib/Athena/ChipObject/printFpgaVersion.h index 9ef9bf4370..788f1df6d9 100644 --- a/hal/lib/Athena/ChipObject/printFpgaVersion.h +++ b/hal/lib/Athena/ChipObject/printFpgaVersion.h @@ -1,42 +1,42 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. - -#ifndef __printFPGAVersion_h__ -#define __printFPGAVersion_h__ - -namespace nFPGA -{ - -template -inline void printFPGAVersion(ttGlobal &global) -{ - tRioStatusCode cleanStatus=0; - uint32_t hardwareGuid[4]; - tSystemInterface &system = *global.getSystemInterface(); - system.getHardwareFpgaSignature(hardwareGuid, &cleanStatus); - const uint32_t *softwareGuid = system.getExpectedFPGASignature(); - printf("FPGA Hardware GUID: 0x"); - for(int i=0; i<4; i++) - { - printf("%08X", hardwareGuid[i]); - } - printf("\n"); - printf("FPGA Software GUID: 0x"); - for(int i=0; i<4; i++) - { - printf("%08X", softwareGuid[i]); - } - printf("\n"); - uint16_t fpgaHardwareVersion = global.readVersion(&cleanStatus); - uint16_t fpgaSoftwareVersion = system.getExpectedFPGAVersion(); - printf("FPGA Hardware Version: %X\n", fpgaHardwareVersion); - printf("FPGA Software Version: %X\n", fpgaSoftwareVersion); - uint32_t fpgaHardwareRevision = global.readRevision(&cleanStatus); - uint32_t fpgaSoftwareRevision = system.getExpectedFPGARevision(); - printf("FPGA Hardware Revision: %X.%X.%X\n", (fpgaHardwareRevision >> 20) & 0xFFF, (fpgaHardwareRevision >> 12) & 0xFF, fpgaHardwareRevision & 0xFFF); - printf("FPGA Software Revision: %X.%X.%X\n", (fpgaSoftwareRevision >> 20) & 0xFFF, (fpgaSoftwareRevision >> 12) & 0xFF, fpgaSoftwareRevision & 0xFFF); -} - -} - -#endif // __printFPGAVersion_h__ - +// Copyright (c) National Instruments 2008. All Rights Reserved. + +#ifndef __printFPGAVersion_h__ +#define __printFPGAVersion_h__ + +namespace nFPGA +{ + +template +inline void printFPGAVersion(ttGlobal &global) +{ + tRioStatusCode cleanStatus=0; + uint32_t hardwareGuid[4]; + tSystemInterface &system = *global.getSystemInterface(); + system.getHardwareFpgaSignature(hardwareGuid, &cleanStatus); + const uint32_t *softwareGuid = system.getExpectedFPGASignature(); + printf("FPGA Hardware GUID: 0x"); + for(int i=0; i<4; i++) + { + printf("%08X", hardwareGuid[i]); + } + printf("\n"); + printf("FPGA Software GUID: 0x"); + for(int i=0; i<4; i++) + { + printf("%08X", softwareGuid[i]); + } + printf("\n"); + uint16_t fpgaHardwareVersion = global.readVersion(&cleanStatus); + uint16_t fpgaSoftwareVersion = system.getExpectedFPGAVersion(); + printf("FPGA Hardware Version: %X\n", fpgaHardwareVersion); + printf("FPGA Software Version: %X\n", fpgaSoftwareVersion); + uint32_t fpgaHardwareRevision = global.readRevision(&cleanStatus); + uint32_t fpgaSoftwareRevision = system.getExpectedFPGARevision(); + printf("FPGA Hardware Revision: %X.%X.%X\n", (fpgaHardwareRevision >> 20) & 0xFFF, (fpgaHardwareRevision >> 12) & 0xFF, fpgaHardwareRevision & 0xFFF); + printf("FPGA Software Revision: %X.%X.%X\n", (fpgaSoftwareRevision >> 20) & 0xFFF, (fpgaSoftwareRevision >> 12) & 0xFF, fpgaSoftwareRevision & 0xFFF); +} + +} + +#endif // __printFPGAVersion_h__ + diff --git a/hal/lib/Athena/ChipObject/tAI.h b/hal/lib/Athena/ChipObject/tAI.h index 24bba65593..5f953561f2 100644 --- a/hal/lib/Athena/ChipObject/tAI.h +++ b/hal/lib/Athena/ChipObject/tAI.h @@ -1,143 +1,143 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_AI_h__ -#define __nFRC_2015_1_0_4_AI_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tAI -{ -public: - tAI(){} - virtual ~tAI(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tAI* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned ScanSize : 3; - unsigned ConvertRate : 26; -#else - unsigned ConvertRate : 26; - unsigned ScanSize : 3; -#endif - }; - struct{ - unsigned value : 29; - }; - } tConfig; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Channel : 3; - unsigned Averaged : 1; -#else - unsigned Averaged : 1; - unsigned Channel : 3; -#endif - }; - struct{ - unsigned value : 4; - }; - } tReadSelect; - - - - typedef enum - { - } tOutput_IfaceConstants; - - virtual signed int readOutput(tRioStatusCode *status) = 0; - - - typedef enum - { - } tConfig_IfaceConstants; - - virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; - virtual void writeConfig_ScanSize(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_ConvertRate(unsigned int value, tRioStatusCode *status) = 0; - virtual tConfig readConfig(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_ScanSize(tRioStatusCode *status) = 0; - virtual unsigned int readConfig_ConvertRate(tRioStatusCode *status) = 0; - - - typedef enum - { - } tLoopTiming_IfaceConstants; - - virtual unsigned int readLoopTiming(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumOversampleBitsElements = 8, - } tOversampleBits_IfaceConstants; - - virtual void writeOversampleBits(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readOversampleBits(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumAverageBitsElements = 8, - } tAverageBits_IfaceConstants; - - virtual void writeAverageBits(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readAverageBits(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumScanListElements = 8, - } tScanList_IfaceConstants; - - virtual void writeScanList(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readScanList(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - } tLatchOutput_IfaceConstants; - - virtual void strobeLatchOutput(tRioStatusCode *status) = 0; - - - typedef enum - { - } tReadSelect_IfaceConstants; - - virtual void writeReadSelect(tReadSelect value, tRioStatusCode *status) = 0; - virtual void writeReadSelect_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeReadSelect_Averaged(bool value, tRioStatusCode *status) = 0; - virtual tReadSelect readReadSelect(tRioStatusCode *status) = 0; - virtual unsigned char readReadSelect_Channel(tRioStatusCode *status) = 0; - virtual bool readReadSelect_Averaged(tRioStatusCode *status) = 0; - - - - -private: - tAI(const tAI&); - void operator=(const tAI&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_AI_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_AI_h__ +#define __nFRC_2015_1_0_5_AI_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tAI +{ +public: + tAI(){} + virtual ~tAI(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tAI* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned ScanSize : 3; + unsigned ConvertRate : 26; +#else + unsigned ConvertRate : 26; + unsigned ScanSize : 3; +#endif + }; + struct{ + unsigned value : 29; + }; + } tConfig; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Channel : 3; + unsigned Averaged : 1; +#else + unsigned Averaged : 1; + unsigned Channel : 3; +#endif + }; + struct{ + unsigned value : 4; + }; + } tReadSelect; + + + + typedef enum + { + } tOutput_IfaceConstants; + + virtual signed int readOutput(tRioStatusCode *status) = 0; + + + typedef enum + { + } tConfig_IfaceConstants; + + virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; + virtual void writeConfig_ScanSize(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_ConvertRate(unsigned int value, tRioStatusCode *status) = 0; + virtual tConfig readConfig(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_ScanSize(tRioStatusCode *status) = 0; + virtual unsigned int readConfig_ConvertRate(tRioStatusCode *status) = 0; + + + typedef enum + { + } tLoopTiming_IfaceConstants; + + virtual unsigned int readLoopTiming(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumOversampleBitsElements = 8, + } tOversampleBits_IfaceConstants; + + virtual void writeOversampleBits(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readOversampleBits(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumAverageBitsElements = 8, + } tAverageBits_IfaceConstants; + + virtual void writeAverageBits(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readAverageBits(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumScanListElements = 8, + } tScanList_IfaceConstants; + + virtual void writeScanList(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readScanList(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + } tLatchOutput_IfaceConstants; + + virtual void strobeLatchOutput(tRioStatusCode *status) = 0; + + + typedef enum + { + } tReadSelect_IfaceConstants; + + virtual void writeReadSelect(tReadSelect value, tRioStatusCode *status) = 0; + virtual void writeReadSelect_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeReadSelect_Averaged(bool value, tRioStatusCode *status) = 0; + virtual tReadSelect readReadSelect(tRioStatusCode *status) = 0; + virtual unsigned char readReadSelect_Channel(tRioStatusCode *status) = 0; + virtual bool readReadSelect_Averaged(tRioStatusCode *status) = 0; + + + + +private: + tAI(const tAI&); + void operator=(const tAI&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_AI_h__ diff --git a/hal/lib/Athena/ChipObject/tAO.h b/hal/lib/Athena/ChipObject/tAO.h index 621cf34fa3..98fe2832eb 100644 --- a/hal/lib/Athena/ChipObject/tAO.h +++ b/hal/lib/Athena/ChipObject/tAO.h @@ -1,50 +1,50 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_AO_h__ -#define __nFRC_2015_1_0_4_AO_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tAO -{ -public: - tAO(){} - virtual ~tAO(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tAO* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - - - - - - typedef enum - { - kNumMXPRegisters = 2, - } tMXP_IfaceConstants; - - virtual void writeMXP(unsigned char reg_index, unsigned short value, tRioStatusCode *status) = 0; - virtual unsigned short readMXP(unsigned char reg_index, tRioStatusCode *status) = 0; - - -private: - tAO(const tAO&); - void operator=(const tAO&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_AO_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_AO_h__ +#define __nFRC_2015_1_0_5_AO_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tAO +{ +public: + tAO(){} + virtual ~tAO(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tAO* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + + + + + + typedef enum + { + kNumMXPRegisters = 2, + } tMXP_IfaceConstants; + + virtual void writeMXP(unsigned char reg_index, unsigned short value, tRioStatusCode *status) = 0; + virtual unsigned short readMXP(unsigned char reg_index, tRioStatusCode *status) = 0; + + +private: + tAO(const tAO&); + void operator=(const tAO&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_AO_h__ diff --git a/hal/lib/Athena/ChipObject/tAccel.h b/hal/lib/Athena/ChipObject/tAccel.h index cdbc5a9b7e..fe43ed4df6 100644 --- a/hal/lib/Athena/ChipObject/tAccel.h +++ b/hal/lib/Athena/ChipObject/tAccel.h @@ -1,62 +1,102 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Accel_h__ -#define __nFRC_2015_1_0_4_Accel_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tAccel -{ -public: - tAccel(){} - virtual ~tAccel(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tAccel* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - - - - typedef enum - { - } tX_IfaceConstants; - - virtual signed short readX(tRioStatusCode *status) = 0; - - - typedef enum - { - } tY_IfaceConstants; - - virtual signed short readY(tRioStatusCode *status) = 0; - - - typedef enum - { - } tZ_IfaceConstants; - - virtual signed short readZ(tRioStatusCode *status) = 0; - - - - -private: - tAccel(const tAccel&); - void operator=(const tAccel&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Accel_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Accel_h__ +#define __nFRC_2015_1_0_5_Accel_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tAccel +{ +public: + tAccel(){} + virtual ~tAccel(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tAccel* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + + + + typedef enum + { + } tSTAT_IfaceConstants; + + virtual unsigned char readSTAT(tRioStatusCode *status) = 0; + + + typedef enum + { + } tCNTR_IfaceConstants; + + virtual void writeCNTR(unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readCNTR(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDATO_IfaceConstants; + + virtual void writeDATO(unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readDATO(tRioStatusCode *status) = 0; + + + typedef enum + { + } tCNFG_IfaceConstants; + + virtual void writeCNFG(unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readCNFG(tRioStatusCode *status) = 0; + + + typedef enum + { + } tCNTL_IfaceConstants; + + virtual void writeCNTL(unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readCNTL(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDATI_IfaceConstants; + + virtual unsigned char readDATI(tRioStatusCode *status) = 0; + + + typedef enum + { + } tGO_IfaceConstants; + + virtual void strobeGO(tRioStatusCode *status) = 0; + + + typedef enum + { + } tADDR_IfaceConstants; + + virtual void writeADDR(unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readADDR(tRioStatusCode *status) = 0; + + + + +private: + tAccel(const tAccel&); + void operator=(const tAccel&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Accel_h__ diff --git a/hal/lib/Athena/ChipObject/tAccumulator.h b/hal/lib/Athena/ChipObject/tAccumulator.h index 78f176cb1d..04c755190b 100644 --- a/hal/lib/Athena/ChipObject/tAccumulator.h +++ b/hal/lib/Athena/ChipObject/tAccumulator.h @@ -1,87 +1,87 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Accumulator_h__ -#define __nFRC_2015_1_0_4_Accumulator_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tAccumulator -{ -public: - tAccumulator(){} - virtual ~tAccumulator(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tAccumulator* create(unsigned char sys_index, tRioStatusCode *status); - virtual unsigned char getSystemIndex() = 0; - - - typedef enum - { - kNumSystems = 2, - } tIfaceConstants; - - typedef - union{ - struct{ - signed long long Value; - unsigned Count : 32; - }; - struct{ - unsigned value : 32; - unsigned value2 : 32; - unsigned value3 : 32; - }; - } tOutput; - - - typedef enum - { - } tOutput_IfaceConstants; - - virtual tOutput readOutput(tRioStatusCode *status) = 0; - virtual signed long long readOutput_Value(tRioStatusCode *status) = 0; - virtual unsigned int readOutput_Count(tRioStatusCode *status) = 0; - - - typedef enum - { - } tCenter_IfaceConstants; - - virtual void writeCenter(signed int value, tRioStatusCode *status) = 0; - virtual signed int readCenter(tRioStatusCode *status) = 0; - - - typedef enum - { - } tDeadband_IfaceConstants; - - virtual void writeDeadband(signed int value, tRioStatusCode *status) = 0; - virtual signed int readDeadband(tRioStatusCode *status) = 0; - - - typedef enum - { - } tReset_IfaceConstants; - - virtual void strobeReset(tRioStatusCode *status) = 0; - - - - - -private: - tAccumulator(const tAccumulator&); - void operator=(const tAccumulator&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Accumulator_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Accumulator_h__ +#define __nFRC_2015_1_0_5_Accumulator_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tAccumulator +{ +public: + tAccumulator(){} + virtual ~tAccumulator(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tAccumulator* create(unsigned char sys_index, tRioStatusCode *status); + virtual unsigned char getSystemIndex() = 0; + + + typedef enum + { + kNumSystems = 2, + } tIfaceConstants; + + typedef + union{ + struct{ + signed long long Value; + unsigned Count : 32; + }; + struct{ + unsigned value : 32; + unsigned value2 : 32; + unsigned value3 : 32; + }; + } tOutput; + + + typedef enum + { + } tOutput_IfaceConstants; + + virtual tOutput readOutput(tRioStatusCode *status) = 0; + virtual signed long long readOutput_Value(tRioStatusCode *status) = 0; + virtual unsigned int readOutput_Count(tRioStatusCode *status) = 0; + + + typedef enum + { + } tCenter_IfaceConstants; + + virtual void writeCenter(signed int value, tRioStatusCode *status) = 0; + virtual signed int readCenter(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDeadband_IfaceConstants; + + virtual void writeDeadband(signed int value, tRioStatusCode *status) = 0; + virtual signed int readDeadband(tRioStatusCode *status) = 0; + + + typedef enum + { + } tReset_IfaceConstants; + + virtual void strobeReset(tRioStatusCode *status) = 0; + + + + + +private: + tAccumulator(const tAccumulator&); + void operator=(const tAccumulator&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Accumulator_h__ diff --git a/hal/lib/Athena/ChipObject/tAlarm.h b/hal/lib/Athena/ChipObject/tAlarm.h index e590fc0a79..3620eb75ba 100644 --- a/hal/lib/Athena/ChipObject/tAlarm.h +++ b/hal/lib/Athena/ChipObject/tAlarm.h @@ -1,57 +1,57 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Alarm_h__ -#define __nFRC_2015_1_0_4_Alarm_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tAlarm -{ -public: - tAlarm(){} - virtual ~tAlarm(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tAlarm* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - - - - typedef enum - { - } tEnable_IfaceConstants; - - virtual void writeEnable(bool value, tRioStatusCode *status) = 0; - virtual bool readEnable(tRioStatusCode *status) = 0; - - - typedef enum - { - } tTriggerTime_IfaceConstants; - - virtual void writeTriggerTime(unsigned int value, tRioStatusCode *status) = 0; - virtual unsigned int readTriggerTime(tRioStatusCode *status) = 0; - - - - -private: - tAlarm(const tAlarm&); - void operator=(const tAlarm&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Alarm_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Alarm_h__ +#define __nFRC_2015_1_0_5_Alarm_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tAlarm +{ +public: + tAlarm(){} + virtual ~tAlarm(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tAlarm* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + + + + typedef enum + { + } tEnable_IfaceConstants; + + virtual void writeEnable(bool value, tRioStatusCode *status) = 0; + virtual bool readEnable(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTriggerTime_IfaceConstants; + + virtual void writeTriggerTime(unsigned int value, tRioStatusCode *status) = 0; + virtual unsigned int readTriggerTime(tRioStatusCode *status) = 0; + + + + +private: + tAlarm(const tAlarm&); + void operator=(const tAlarm&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Alarm_h__ diff --git a/hal/lib/Athena/ChipObject/tAnalogTrigger.h b/hal/lib/Athena/ChipObject/tAnalogTrigger.h index cb9efe1705..fdd776cab8 100644 --- a/hal/lib/Athena/ChipObject/tAnalogTrigger.h +++ b/hal/lib/Athena/ChipObject/tAnalogTrigger.h @@ -1,129 +1,129 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_AnalogTrigger_h__ -#define __nFRC_2015_1_0_4_AnalogTrigger_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tAnalogTrigger -{ -public: - tAnalogTrigger(){} - virtual ~tAnalogTrigger(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tAnalogTrigger* create(unsigned char sys_index, tRioStatusCode *status); - virtual unsigned char getSystemIndex() = 0; - - - typedef enum - { - kNumSystems = 8, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned InHysteresis : 1; - unsigned OverLimit : 1; - unsigned Rising : 1; - unsigned Falling : 1; -#else - unsigned Falling : 1; - unsigned Rising : 1; - unsigned OverLimit : 1; - unsigned InHysteresis : 1; -#endif - }; - struct{ - unsigned value : 4; - }; - } tOutput; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Channel : 3; - unsigned Averaged : 1; - unsigned Filter : 1; - unsigned FloatingRollover : 1; - signed RolloverLimit : 8; -#else - signed RolloverLimit : 8; - unsigned FloatingRollover : 1; - unsigned Filter : 1; - unsigned Averaged : 1; - unsigned Channel : 3; -#endif - }; - struct{ - unsigned value : 14; - }; - } tSourceSelect; - - - typedef enum - { - } tSourceSelect_IfaceConstants; - - virtual void writeSourceSelect(tSourceSelect value, tRioStatusCode *status) = 0; - virtual void writeSourceSelect_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeSourceSelect_Averaged(bool value, tRioStatusCode *status) = 0; - virtual void writeSourceSelect_Filter(bool value, tRioStatusCode *status) = 0; - virtual void writeSourceSelect_FloatingRollover(bool value, tRioStatusCode *status) = 0; - virtual void writeSourceSelect_RolloverLimit(signed short value, tRioStatusCode *status) = 0; - virtual tSourceSelect readSourceSelect(tRioStatusCode *status) = 0; - virtual unsigned char readSourceSelect_Channel(tRioStatusCode *status) = 0; - virtual bool readSourceSelect_Averaged(tRioStatusCode *status) = 0; - virtual bool readSourceSelect_Filter(tRioStatusCode *status) = 0; - virtual bool readSourceSelect_FloatingRollover(tRioStatusCode *status) = 0; - virtual signed short readSourceSelect_RolloverLimit(tRioStatusCode *status) = 0; - - - typedef enum - { - } tUpperLimit_IfaceConstants; - - virtual void writeUpperLimit(signed int value, tRioStatusCode *status) = 0; - virtual signed int readUpperLimit(tRioStatusCode *status) = 0; - - - typedef enum - { - } tLowerLimit_IfaceConstants; - - virtual void writeLowerLimit(signed int value, tRioStatusCode *status) = 0; - virtual signed int readLowerLimit(tRioStatusCode *status) = 0; - - - - typedef enum - { - kNumOutputElements = 8, - } tOutput_IfaceConstants; - - virtual tOutput readOutput(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readOutput_InHysteresis(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readOutput_OverLimit(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readOutput_Rising(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readOutput_Falling(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - - -private: - tAnalogTrigger(const tAnalogTrigger&); - void operator=(const tAnalogTrigger&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_AnalogTrigger_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_AnalogTrigger_h__ +#define __nFRC_2015_1_0_5_AnalogTrigger_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tAnalogTrigger +{ +public: + tAnalogTrigger(){} + virtual ~tAnalogTrigger(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tAnalogTrigger* create(unsigned char sys_index, tRioStatusCode *status); + virtual unsigned char getSystemIndex() = 0; + + + typedef enum + { + kNumSystems = 8, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned InHysteresis : 1; + unsigned OverLimit : 1; + unsigned Rising : 1; + unsigned Falling : 1; +#else + unsigned Falling : 1; + unsigned Rising : 1; + unsigned OverLimit : 1; + unsigned InHysteresis : 1; +#endif + }; + struct{ + unsigned value : 4; + }; + } tOutput; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Channel : 3; + unsigned Averaged : 1; + unsigned Filter : 1; + unsigned FloatingRollover : 1; + signed RolloverLimit : 8; +#else + signed RolloverLimit : 8; + unsigned FloatingRollover : 1; + unsigned Filter : 1; + unsigned Averaged : 1; + unsigned Channel : 3; +#endif + }; + struct{ + unsigned value : 14; + }; + } tSourceSelect; + + + typedef enum + { + } tSourceSelect_IfaceConstants; + + virtual void writeSourceSelect(tSourceSelect value, tRioStatusCode *status) = 0; + virtual void writeSourceSelect_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeSourceSelect_Averaged(bool value, tRioStatusCode *status) = 0; + virtual void writeSourceSelect_Filter(bool value, tRioStatusCode *status) = 0; + virtual void writeSourceSelect_FloatingRollover(bool value, tRioStatusCode *status) = 0; + virtual void writeSourceSelect_RolloverLimit(signed short value, tRioStatusCode *status) = 0; + virtual tSourceSelect readSourceSelect(tRioStatusCode *status) = 0; + virtual unsigned char readSourceSelect_Channel(tRioStatusCode *status) = 0; + virtual bool readSourceSelect_Averaged(tRioStatusCode *status) = 0; + virtual bool readSourceSelect_Filter(tRioStatusCode *status) = 0; + virtual bool readSourceSelect_FloatingRollover(tRioStatusCode *status) = 0; + virtual signed short readSourceSelect_RolloverLimit(tRioStatusCode *status) = 0; + + + typedef enum + { + } tUpperLimit_IfaceConstants; + + virtual void writeUpperLimit(signed int value, tRioStatusCode *status) = 0; + virtual signed int readUpperLimit(tRioStatusCode *status) = 0; + + + typedef enum + { + } tLowerLimit_IfaceConstants; + + virtual void writeLowerLimit(signed int value, tRioStatusCode *status) = 0; + virtual signed int readLowerLimit(tRioStatusCode *status) = 0; + + + + typedef enum + { + kNumOutputElements = 8, + } tOutput_IfaceConstants; + + virtual tOutput readOutput(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readOutput_InHysteresis(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readOutput_OverLimit(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readOutput_Rising(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readOutput_Falling(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + + +private: + tAnalogTrigger(const tAnalogTrigger&); + void operator=(const tAnalogTrigger&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_AnalogTrigger_h__ diff --git a/hal/lib/Athena/ChipObject/tBIST.h b/hal/lib/Athena/ChipObject/tBIST.h index 45efb780dc..6eff7bcfe2 100644 --- a/hal/lib/Athena/ChipObject/tBIST.h +++ b/hal/lib/Athena/ChipObject/tBIST.h @@ -1,90 +1,90 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_BIST_h__ -#define __nFRC_2015_1_0_4_BIST_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tBIST -{ -public: - tBIST(){} - virtual ~tBIST(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tBIST* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - - - - typedef enum - { - } tDO0SquareTicks_IfaceConstants; - - virtual void writeDO0SquareTicks(unsigned int value, tRioStatusCode *status) = 0; - virtual unsigned int readDO0SquareTicks(tRioStatusCode *status) = 0; - - - typedef enum - { - } tEnable_IfaceConstants; - - virtual void writeEnable(bool value, tRioStatusCode *status) = 0; - virtual bool readEnable(tRioStatusCode *status) = 0; - - - typedef enum - { - } tDO1SquareEnable_IfaceConstants; - - virtual void writeDO1SquareEnable(bool value, tRioStatusCode *status) = 0; - virtual bool readDO1SquareEnable(tRioStatusCode *status) = 0; - - - typedef enum - { - } tDO0SquareEnable_IfaceConstants; - - virtual void writeDO0SquareEnable(bool value, tRioStatusCode *status) = 0; - virtual bool readDO0SquareEnable(tRioStatusCode *status) = 0; - - - typedef enum - { - } tDO1SquareTicks_IfaceConstants; - - virtual void writeDO1SquareTicks(unsigned int value, tRioStatusCode *status) = 0; - virtual unsigned int readDO1SquareTicks(tRioStatusCode *status) = 0; - - - - - typedef enum - { - kNumDORegisters = 2, - } tDO_IfaceConstants; - - virtual void writeDO(unsigned char reg_index, bool value, tRioStatusCode *status) = 0; - virtual bool readDO(unsigned char reg_index, tRioStatusCode *status) = 0; - - -private: - tBIST(const tBIST&); - void operator=(const tBIST&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_BIST_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_BIST_h__ +#define __nFRC_2015_1_0_5_BIST_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tBIST +{ +public: + tBIST(){} + virtual ~tBIST(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tBIST* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + + + + typedef enum + { + } tDO0SquareTicks_IfaceConstants; + + virtual void writeDO0SquareTicks(unsigned int value, tRioStatusCode *status) = 0; + virtual unsigned int readDO0SquareTicks(tRioStatusCode *status) = 0; + + + typedef enum + { + } tEnable_IfaceConstants; + + virtual void writeEnable(bool value, tRioStatusCode *status) = 0; + virtual bool readEnable(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDO1SquareEnable_IfaceConstants; + + virtual void writeDO1SquareEnable(bool value, tRioStatusCode *status) = 0; + virtual bool readDO1SquareEnable(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDO0SquareEnable_IfaceConstants; + + virtual void writeDO0SquareEnable(bool value, tRioStatusCode *status) = 0; + virtual bool readDO0SquareEnable(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDO1SquareTicks_IfaceConstants; + + virtual void writeDO1SquareTicks(unsigned int value, tRioStatusCode *status) = 0; + virtual unsigned int readDO1SquareTicks(tRioStatusCode *status) = 0; + + + + + typedef enum + { + kNumDORegisters = 2, + } tDO_IfaceConstants; + + virtual void writeDO(unsigned char reg_index, bool value, tRioStatusCode *status) = 0; + virtual bool readDO(unsigned char reg_index, tRioStatusCode *status) = 0; + + +private: + tBIST(const tBIST&); + void operator=(const tBIST&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_BIST_h__ diff --git a/hal/lib/Athena/ChipObject/tCounter.h b/hal/lib/Athena/ChipObject/tCounter.h index 6192f500f1..72d1f97389 100644 --- a/hal/lib/Athena/ChipObject/tCounter.h +++ b/hal/lib/Athena/ChipObject/tCounter.h @@ -1,219 +1,219 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Counter_h__ -#define __nFRC_2015_1_0_4_Counter_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tCounter -{ -public: - tCounter(){} - virtual ~tCounter(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tCounter* create(unsigned char sys_index, tRioStatusCode *status); - virtual unsigned char getSystemIndex() = 0; - - - typedef enum - { - kNumSystems = 8, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Direction : 1; - signed Value : 31; -#else - signed Value : 31; - unsigned Direction : 1; -#endif - }; - struct{ - unsigned value : 32; - }; - } tOutput; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned UpSource_Channel : 4; - unsigned UpSource_Module : 1; - unsigned UpSource_AnalogTrigger : 1; - unsigned DownSource_Channel : 4; - unsigned DownSource_Module : 1; - unsigned DownSource_AnalogTrigger : 1; - unsigned IndexSource_Channel : 4; - unsigned IndexSource_Module : 1; - unsigned IndexSource_AnalogTrigger : 1; - unsigned IndexActiveHigh : 1; - unsigned UpRisingEdge : 1; - unsigned UpFallingEdge : 1; - unsigned DownRisingEdge : 1; - unsigned DownFallingEdge : 1; - unsigned Mode : 2; - unsigned PulseLengthThreshold : 6; - unsigned Enable : 1; -#else - unsigned Enable : 1; - unsigned PulseLengthThreshold : 6; - unsigned Mode : 2; - unsigned DownFallingEdge : 1; - unsigned DownRisingEdge : 1; - unsigned UpFallingEdge : 1; - unsigned UpRisingEdge : 1; - unsigned IndexActiveHigh : 1; - unsigned IndexSource_AnalogTrigger : 1; - unsigned IndexSource_Module : 1; - unsigned IndexSource_Channel : 4; - unsigned DownSource_AnalogTrigger : 1; - unsigned DownSource_Module : 1; - unsigned DownSource_Channel : 4; - unsigned UpSource_AnalogTrigger : 1; - unsigned UpSource_Module : 1; - unsigned UpSource_Channel : 4; -#endif - }; - struct{ - unsigned value : 32; - }; - } tConfig; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Period : 23; - signed Count : 8; - unsigned Stalled : 1; -#else - unsigned Stalled : 1; - signed Count : 8; - unsigned Period : 23; -#endif - }; - struct{ - unsigned value : 32; - }; - } tTimerOutput; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned StallPeriod : 24; - unsigned AverageSize : 7; - unsigned UpdateWhenEmpty : 1; -#else - unsigned UpdateWhenEmpty : 1; - unsigned AverageSize : 7; - unsigned StallPeriod : 24; -#endif - }; - struct{ - unsigned value : 32; - }; - } tTimerConfig; - - - typedef enum - { - } tOutput_IfaceConstants; - - virtual tOutput readOutput(tRioStatusCode *status) = 0; - virtual bool readOutput_Direction(tRioStatusCode *status) = 0; - virtual signed int readOutput_Value(tRioStatusCode *status) = 0; - - - typedef enum - { - } tConfig_IfaceConstants; - - virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; - virtual void writeConfig_UpSource_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_UpSource_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_UpSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_DownSource_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_DownSource_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_DownSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexSource_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexSource_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexActiveHigh(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_UpRisingEdge(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_UpFallingEdge(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_DownRisingEdge(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_DownFallingEdge(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Mode(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_PulseLengthThreshold(unsigned short value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable(bool value, tRioStatusCode *status) = 0; - virtual tConfig readConfig(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_UpSource_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_UpSource_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_UpSource_AnalogTrigger(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_DownSource_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_DownSource_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_DownSource_AnalogTrigger(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_IndexSource_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_IndexSource_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_IndexSource_AnalogTrigger(tRioStatusCode *status) = 0; - virtual bool readConfig_IndexActiveHigh(tRioStatusCode *status) = 0; - virtual bool readConfig_UpRisingEdge(tRioStatusCode *status) = 0; - virtual bool readConfig_UpFallingEdge(tRioStatusCode *status) = 0; - virtual bool readConfig_DownRisingEdge(tRioStatusCode *status) = 0; - virtual bool readConfig_DownFallingEdge(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_Mode(tRioStatusCode *status) = 0; - virtual unsigned short readConfig_PulseLengthThreshold(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable(tRioStatusCode *status) = 0; - - - typedef enum - { - } tTimerOutput_IfaceConstants; - - virtual tTimerOutput readTimerOutput(tRioStatusCode *status) = 0; - virtual unsigned int readTimerOutput_Period(tRioStatusCode *status) = 0; - virtual signed char readTimerOutput_Count(tRioStatusCode *status) = 0; - virtual bool readTimerOutput_Stalled(tRioStatusCode *status) = 0; - - - typedef enum - { - } tReset_IfaceConstants; - - virtual void strobeReset(tRioStatusCode *status) = 0; - - - typedef enum - { - } tTimerConfig_IfaceConstants; - - virtual void writeTimerConfig(tTimerConfig value, tRioStatusCode *status) = 0; - virtual void writeTimerConfig_StallPeriod(unsigned int value, tRioStatusCode *status) = 0; - virtual void writeTimerConfig_AverageSize(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeTimerConfig_UpdateWhenEmpty(bool value, tRioStatusCode *status) = 0; - virtual tTimerConfig readTimerConfig(tRioStatusCode *status) = 0; - virtual unsigned int readTimerConfig_StallPeriod(tRioStatusCode *status) = 0; - virtual unsigned char readTimerConfig_AverageSize(tRioStatusCode *status) = 0; - virtual bool readTimerConfig_UpdateWhenEmpty(tRioStatusCode *status) = 0; - - - - - -private: - tCounter(const tCounter&); - void operator=(const tCounter&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Counter_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Counter_h__ +#define __nFRC_2015_1_0_5_Counter_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tCounter +{ +public: + tCounter(){} + virtual ~tCounter(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tCounter* create(unsigned char sys_index, tRioStatusCode *status); + virtual unsigned char getSystemIndex() = 0; + + + typedef enum + { + kNumSystems = 8, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Direction : 1; + signed Value : 31; +#else + signed Value : 31; + unsigned Direction : 1; +#endif + }; + struct{ + unsigned value : 32; + }; + } tOutput; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned UpSource_Channel : 4; + unsigned UpSource_Module : 1; + unsigned UpSource_AnalogTrigger : 1; + unsigned DownSource_Channel : 4; + unsigned DownSource_Module : 1; + unsigned DownSource_AnalogTrigger : 1; + unsigned IndexSource_Channel : 4; + unsigned IndexSource_Module : 1; + unsigned IndexSource_AnalogTrigger : 1; + unsigned IndexActiveHigh : 1; + unsigned UpRisingEdge : 1; + unsigned UpFallingEdge : 1; + unsigned DownRisingEdge : 1; + unsigned DownFallingEdge : 1; + unsigned Mode : 2; + unsigned PulseLengthThreshold : 6; + unsigned Enable : 1; +#else + unsigned Enable : 1; + unsigned PulseLengthThreshold : 6; + unsigned Mode : 2; + unsigned DownFallingEdge : 1; + unsigned DownRisingEdge : 1; + unsigned UpFallingEdge : 1; + unsigned UpRisingEdge : 1; + unsigned IndexActiveHigh : 1; + unsigned IndexSource_AnalogTrigger : 1; + unsigned IndexSource_Module : 1; + unsigned IndexSource_Channel : 4; + unsigned DownSource_AnalogTrigger : 1; + unsigned DownSource_Module : 1; + unsigned DownSource_Channel : 4; + unsigned UpSource_AnalogTrigger : 1; + unsigned UpSource_Module : 1; + unsigned UpSource_Channel : 4; +#endif + }; + struct{ + unsigned value : 32; + }; + } tConfig; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Period : 23; + signed Count : 8; + unsigned Stalled : 1; +#else + unsigned Stalled : 1; + signed Count : 8; + unsigned Period : 23; +#endif + }; + struct{ + unsigned value : 32; + }; + } tTimerOutput; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned StallPeriod : 24; + unsigned AverageSize : 7; + unsigned UpdateWhenEmpty : 1; +#else + unsigned UpdateWhenEmpty : 1; + unsigned AverageSize : 7; + unsigned StallPeriod : 24; +#endif + }; + struct{ + unsigned value : 32; + }; + } tTimerConfig; + + + typedef enum + { + } tOutput_IfaceConstants; + + virtual tOutput readOutput(tRioStatusCode *status) = 0; + virtual bool readOutput_Direction(tRioStatusCode *status) = 0; + virtual signed int readOutput_Value(tRioStatusCode *status) = 0; + + + typedef enum + { + } tConfig_IfaceConstants; + + virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; + virtual void writeConfig_UpSource_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_UpSource_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_UpSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_DownSource_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_DownSource_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_DownSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexSource_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexSource_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexActiveHigh(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_UpRisingEdge(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_UpFallingEdge(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_DownRisingEdge(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_DownFallingEdge(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Mode(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_PulseLengthThreshold(unsigned short value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable(bool value, tRioStatusCode *status) = 0; + virtual tConfig readConfig(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_UpSource_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_UpSource_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_UpSource_AnalogTrigger(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_DownSource_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_DownSource_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_DownSource_AnalogTrigger(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_IndexSource_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_IndexSource_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_IndexSource_AnalogTrigger(tRioStatusCode *status) = 0; + virtual bool readConfig_IndexActiveHigh(tRioStatusCode *status) = 0; + virtual bool readConfig_UpRisingEdge(tRioStatusCode *status) = 0; + virtual bool readConfig_UpFallingEdge(tRioStatusCode *status) = 0; + virtual bool readConfig_DownRisingEdge(tRioStatusCode *status) = 0; + virtual bool readConfig_DownFallingEdge(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_Mode(tRioStatusCode *status) = 0; + virtual unsigned short readConfig_PulseLengthThreshold(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTimerOutput_IfaceConstants; + + virtual tTimerOutput readTimerOutput(tRioStatusCode *status) = 0; + virtual unsigned int readTimerOutput_Period(tRioStatusCode *status) = 0; + virtual signed char readTimerOutput_Count(tRioStatusCode *status) = 0; + virtual bool readTimerOutput_Stalled(tRioStatusCode *status) = 0; + + + typedef enum + { + } tReset_IfaceConstants; + + virtual void strobeReset(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTimerConfig_IfaceConstants; + + virtual void writeTimerConfig(tTimerConfig value, tRioStatusCode *status) = 0; + virtual void writeTimerConfig_StallPeriod(unsigned int value, tRioStatusCode *status) = 0; + virtual void writeTimerConfig_AverageSize(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeTimerConfig_UpdateWhenEmpty(bool value, tRioStatusCode *status) = 0; + virtual tTimerConfig readTimerConfig(tRioStatusCode *status) = 0; + virtual unsigned int readTimerConfig_StallPeriod(tRioStatusCode *status) = 0; + virtual unsigned char readTimerConfig_AverageSize(tRioStatusCode *status) = 0; + virtual bool readTimerConfig_UpdateWhenEmpty(tRioStatusCode *status) = 0; + + + + + +private: + tCounter(const tCounter&); + void operator=(const tCounter&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Counter_h__ diff --git a/hal/lib/Athena/ChipObject/tDIO.h b/hal/lib/Athena/ChipObject/tDIO.h index 8ba2210cbb..7d85376de2 100644 --- a/hal/lib/Athena/ChipObject/tDIO.h +++ b/hal/lib/Athena/ChipObject/tDIO.h @@ -1,248 +1,248 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_DIO_h__ -#define __nFRC_2015_1_0_4_DIO_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tDIO -{ -public: - tDIO(){} - virtual ~tDIO(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tDIO* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Headers : 10; - unsigned Reserved : 6; - unsigned MXP : 16; -#else - unsigned MXP : 16; - unsigned Reserved : 6; - unsigned Headers : 10; -#endif - }; - struct{ - unsigned value : 32; - }; - } tDO; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Headers : 10; - unsigned Reserved : 6; - unsigned MXP : 16; -#else - unsigned MXP : 16; - unsigned Reserved : 6; - unsigned Headers : 10; -#endif - }; - struct{ - unsigned value : 32; - }; - } tOutputEnable; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Headers : 10; - unsigned Reserved : 6; - unsigned MXP : 16; -#else - unsigned MXP : 16; - unsigned Reserved : 6; - unsigned Headers : 10; -#endif - }; - struct{ - unsigned value : 32; - }; - } tPulse; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Headers : 10; - unsigned Reserved : 6; - unsigned MXP : 16; -#else - unsigned MXP : 16; - unsigned Reserved : 6; - unsigned Headers : 10; -#endif - }; - struct{ - unsigned value : 32; - }; - } tDI; - - - - typedef enum - { - } tDO_IfaceConstants; - - virtual void writeDO(tDO value, tRioStatusCode *status) = 0; - virtual void writeDO_Headers(unsigned short value, tRioStatusCode *status) = 0; - virtual void writeDO_Reserved(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeDO_MXP(unsigned short value, tRioStatusCode *status) = 0; - virtual tDO readDO(tRioStatusCode *status) = 0; - virtual unsigned short readDO_Headers(tRioStatusCode *status) = 0; - virtual unsigned char readDO_Reserved(tRioStatusCode *status) = 0; - virtual unsigned short readDO_MXP(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumPWMDutyCycleAElements = 4, - } tPWMDutyCycleA_IfaceConstants; - - virtual void writePWMDutyCycleA(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readPWMDutyCycleA(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumPWMDutyCycleBElements = 2, - } tPWMDutyCycleB_IfaceConstants; - - virtual void writePWMDutyCycleB(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readPWMDutyCycleB(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumFilterSelectHdrElements = 16, - } tFilterSelectHdr_IfaceConstants; - - virtual void writeFilterSelectHdr(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readFilterSelectHdr(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumFilterPeriodMXPElements = 3, - } tFilterPeriodMXP_IfaceConstants; - - virtual void writeFilterPeriodMXP(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readFilterPeriodMXP(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - } tOutputEnable_IfaceConstants; - - virtual void writeOutputEnable(tOutputEnable value, tRioStatusCode *status) = 0; - virtual void writeOutputEnable_Headers(unsigned short value, tRioStatusCode *status) = 0; - virtual void writeOutputEnable_Reserved(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeOutputEnable_MXP(unsigned short value, tRioStatusCode *status) = 0; - virtual tOutputEnable readOutputEnable(tRioStatusCode *status) = 0; - virtual unsigned short readOutputEnable_Headers(tRioStatusCode *status) = 0; - virtual unsigned char readOutputEnable_Reserved(tRioStatusCode *status) = 0; - virtual unsigned short readOutputEnable_MXP(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumPWMOutputSelectElements = 6, - } tPWMOutputSelect_IfaceConstants; - - virtual void writePWMOutputSelect(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readPWMOutputSelect(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - } tPulse_IfaceConstants; - - virtual void writePulse(tPulse value, tRioStatusCode *status) = 0; - virtual void writePulse_Headers(unsigned short value, tRioStatusCode *status) = 0; - virtual void writePulse_Reserved(unsigned char value, tRioStatusCode *status) = 0; - virtual void writePulse_MXP(unsigned short value, tRioStatusCode *status) = 0; - virtual tPulse readPulse(tRioStatusCode *status) = 0; - virtual unsigned short readPulse_Headers(tRioStatusCode *status) = 0; - virtual unsigned char readPulse_Reserved(tRioStatusCode *status) = 0; - virtual unsigned short readPulse_MXP(tRioStatusCode *status) = 0; - - - typedef enum - { - } tDI_IfaceConstants; - - virtual tDI readDI(tRioStatusCode *status) = 0; - virtual unsigned short readDI_Headers(tRioStatusCode *status) = 0; - virtual unsigned char readDI_Reserved(tRioStatusCode *status) = 0; - virtual unsigned short readDI_MXP(tRioStatusCode *status) = 0; - - - typedef enum - { - } tEnableMXPSpecialFunction_IfaceConstants; - - virtual void writeEnableMXPSpecialFunction(unsigned short value, tRioStatusCode *status) = 0; - virtual unsigned short readEnableMXPSpecialFunction(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumFilterSelectMXPElements = 16, - } tFilterSelectMXP_IfaceConstants; - - virtual void writeFilterSelectMXP(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readFilterSelectMXP(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - } tPulseLength_IfaceConstants; - - virtual void writePulseLength(unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readPulseLength(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumFilterPeriodHdrElements = 3, - } tFilterPeriodHdr_IfaceConstants; - - virtual void writeFilterPeriodHdr(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readFilterPeriodHdr(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - } tPWMPeriodPower_IfaceConstants; - - virtual void writePWMPeriodPower(unsigned short value, tRioStatusCode *status) = 0; - virtual unsigned short readPWMPeriodPower(tRioStatusCode *status) = 0; - - - - -private: - tDIO(const tDIO&); - void operator=(const tDIO&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_DIO_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_DIO_h__ +#define __nFRC_2015_1_0_5_DIO_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tDIO +{ +public: + tDIO(){} + virtual ~tDIO(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tDIO* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Headers : 10; + unsigned Reserved : 6; + unsigned MXP : 16; +#else + unsigned MXP : 16; + unsigned Reserved : 6; + unsigned Headers : 10; +#endif + }; + struct{ + unsigned value : 32; + }; + } tDO; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Headers : 10; + unsigned Reserved : 6; + unsigned MXP : 16; +#else + unsigned MXP : 16; + unsigned Reserved : 6; + unsigned Headers : 10; +#endif + }; + struct{ + unsigned value : 32; + }; + } tOutputEnable; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Headers : 10; + unsigned Reserved : 6; + unsigned MXP : 16; +#else + unsigned MXP : 16; + unsigned Reserved : 6; + unsigned Headers : 10; +#endif + }; + struct{ + unsigned value : 32; + }; + } tPulse; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Headers : 10; + unsigned Reserved : 6; + unsigned MXP : 16; +#else + unsigned MXP : 16; + unsigned Reserved : 6; + unsigned Headers : 10; +#endif + }; + struct{ + unsigned value : 32; + }; + } tDI; + + + + typedef enum + { + } tDO_IfaceConstants; + + virtual void writeDO(tDO value, tRioStatusCode *status) = 0; + virtual void writeDO_Headers(unsigned short value, tRioStatusCode *status) = 0; + virtual void writeDO_Reserved(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeDO_MXP(unsigned short value, tRioStatusCode *status) = 0; + virtual tDO readDO(tRioStatusCode *status) = 0; + virtual unsigned short readDO_Headers(tRioStatusCode *status) = 0; + virtual unsigned char readDO_Reserved(tRioStatusCode *status) = 0; + virtual unsigned short readDO_MXP(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumPWMDutyCycleAElements = 4, + } tPWMDutyCycleA_IfaceConstants; + + virtual void writePWMDutyCycleA(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readPWMDutyCycleA(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumPWMDutyCycleBElements = 2, + } tPWMDutyCycleB_IfaceConstants; + + virtual void writePWMDutyCycleB(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readPWMDutyCycleB(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumFilterSelectHdrElements = 16, + } tFilterSelectHdr_IfaceConstants; + + virtual void writeFilterSelectHdr(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readFilterSelectHdr(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumFilterPeriodMXPElements = 3, + } tFilterPeriodMXP_IfaceConstants; + + virtual void writeFilterPeriodMXP(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readFilterPeriodMXP(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + } tOutputEnable_IfaceConstants; + + virtual void writeOutputEnable(tOutputEnable value, tRioStatusCode *status) = 0; + virtual void writeOutputEnable_Headers(unsigned short value, tRioStatusCode *status) = 0; + virtual void writeOutputEnable_Reserved(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeOutputEnable_MXP(unsigned short value, tRioStatusCode *status) = 0; + virtual tOutputEnable readOutputEnable(tRioStatusCode *status) = 0; + virtual unsigned short readOutputEnable_Headers(tRioStatusCode *status) = 0; + virtual unsigned char readOutputEnable_Reserved(tRioStatusCode *status) = 0; + virtual unsigned short readOutputEnable_MXP(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumPWMOutputSelectElements = 6, + } tPWMOutputSelect_IfaceConstants; + + virtual void writePWMOutputSelect(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readPWMOutputSelect(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + } tPulse_IfaceConstants; + + virtual void writePulse(tPulse value, tRioStatusCode *status) = 0; + virtual void writePulse_Headers(unsigned short value, tRioStatusCode *status) = 0; + virtual void writePulse_Reserved(unsigned char value, tRioStatusCode *status) = 0; + virtual void writePulse_MXP(unsigned short value, tRioStatusCode *status) = 0; + virtual tPulse readPulse(tRioStatusCode *status) = 0; + virtual unsigned short readPulse_Headers(tRioStatusCode *status) = 0; + virtual unsigned char readPulse_Reserved(tRioStatusCode *status) = 0; + virtual unsigned short readPulse_MXP(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDI_IfaceConstants; + + virtual tDI readDI(tRioStatusCode *status) = 0; + virtual unsigned short readDI_Headers(tRioStatusCode *status) = 0; + virtual unsigned char readDI_Reserved(tRioStatusCode *status) = 0; + virtual unsigned short readDI_MXP(tRioStatusCode *status) = 0; + + + typedef enum + { + } tEnableMXPSpecialFunction_IfaceConstants; + + virtual void writeEnableMXPSpecialFunction(unsigned short value, tRioStatusCode *status) = 0; + virtual unsigned short readEnableMXPSpecialFunction(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumFilterSelectMXPElements = 16, + } tFilterSelectMXP_IfaceConstants; + + virtual void writeFilterSelectMXP(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readFilterSelectMXP(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + } tPulseLength_IfaceConstants; + + virtual void writePulseLength(unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readPulseLength(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumFilterPeriodHdrElements = 3, + } tFilterPeriodHdr_IfaceConstants; + + virtual void writeFilterPeriodHdr(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readFilterPeriodHdr(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + } tPWMPeriodPower_IfaceConstants; + + virtual void writePWMPeriodPower(unsigned short value, tRioStatusCode *status) = 0; + virtual unsigned short readPWMPeriodPower(tRioStatusCode *status) = 0; + + + + +private: + tDIO(const tDIO&); + void operator=(const tDIO&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_DIO_h__ diff --git a/hal/lib/Athena/ChipObject/tDMA.h b/hal/lib/Athena/ChipObject/tDMA.h index f99aece645..623c979f7e 100644 --- a/hal/lib/Athena/ChipObject/tDMA.h +++ b/hal/lib/Athena/ChipObject/tDMA.h @@ -1,188 +1,188 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_DMA_h__ -#define __nFRC_2015_1_0_4_DMA_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tDMA -{ -public: - tDMA(){} - virtual ~tDMA(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tDMA* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Pause : 1; - unsigned Enable_AI0_Low : 1; - unsigned Enable_AI0_High : 1; - unsigned Enable_AIAveraged0_Low : 1; - unsigned Enable_AIAveraged0_High : 1; - unsigned Enable_AI1_Low : 1; - unsigned Enable_AI1_High : 1; - unsigned Enable_AIAveraged1_Low : 1; - unsigned Enable_AIAveraged1_High : 1; - unsigned Enable_Accumulator0 : 1; - unsigned Enable_Accumulator1 : 1; - unsigned Enable_DI : 1; - unsigned Enable_AnalogTriggers : 1; - unsigned Enable_Counters_Low : 1; - unsigned Enable_Counters_High : 1; - unsigned Enable_CounterTimers_Low : 1; - unsigned Enable_CounterTimers_High : 1; - unsigned Enable_Encoders : 1; - unsigned Enable_EncoderTimers : 1; - unsigned ExternalClock : 1; -#else - unsigned ExternalClock : 1; - unsigned Enable_EncoderTimers : 1; - unsigned Enable_Encoders : 1; - unsigned Enable_CounterTimers_High : 1; - unsigned Enable_CounterTimers_Low : 1; - unsigned Enable_Counters_High : 1; - unsigned Enable_Counters_Low : 1; - unsigned Enable_AnalogTriggers : 1; - unsigned Enable_DI : 1; - unsigned Enable_Accumulator1 : 1; - unsigned Enable_Accumulator0 : 1; - unsigned Enable_AIAveraged1_High : 1; - unsigned Enable_AIAveraged1_Low : 1; - unsigned Enable_AI1_High : 1; - unsigned Enable_AI1_Low : 1; - unsigned Enable_AIAveraged0_High : 1; - unsigned Enable_AIAveraged0_Low : 1; - unsigned Enable_AI0_High : 1; - unsigned Enable_AI0_Low : 1; - unsigned Pause : 1; -#endif - }; - struct{ - unsigned value : 20; - }; - } tConfig; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned ExternalClockSource_Channel : 4; - unsigned ExternalClockSource_Module : 1; - unsigned ExternalClockSource_AnalogTrigger : 1; - unsigned RisingEdge : 1; - unsigned FallingEdge : 1; -#else - unsigned FallingEdge : 1; - unsigned RisingEdge : 1; - unsigned ExternalClockSource_AnalogTrigger : 1; - unsigned ExternalClockSource_Module : 1; - unsigned ExternalClockSource_Channel : 4; -#endif - }; - struct{ - unsigned value : 8; - }; - } tExternalTriggers; - - - - typedef enum - { - } tRate_IfaceConstants; - - virtual void writeRate(unsigned int value, tRioStatusCode *status) = 0; - virtual unsigned int readRate(tRioStatusCode *status) = 0; - - - typedef enum - { - } tConfig_IfaceConstants; - - virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; - virtual void writeConfig_Pause(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AI0_Low(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AI0_High(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AIAveraged0_Low(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AIAveraged0_High(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AI1_Low(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AI1_High(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AIAveraged1_Low(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AIAveraged1_High(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_Accumulator0(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_Accumulator1(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_DI(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_AnalogTriggers(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_Counters_Low(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_Counters_High(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_CounterTimers_Low(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_CounterTimers_High(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_Encoders(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable_EncoderTimers(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_ExternalClock(bool value, tRioStatusCode *status) = 0; - virtual tConfig readConfig(tRioStatusCode *status) = 0; - virtual bool readConfig_Pause(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AI0_Low(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AI0_High(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AIAveraged0_Low(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AIAveraged0_High(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AI1_Low(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AI1_High(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AIAveraged1_Low(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AIAveraged1_High(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_Accumulator0(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_Accumulator1(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_DI(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_AnalogTriggers(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_Counters_Low(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_Counters_High(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_CounterTimers_Low(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_CounterTimers_High(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_Encoders(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable_EncoderTimers(tRioStatusCode *status) = 0; - virtual bool readConfig_ExternalClock(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumExternalTriggersElements = 4, - } tExternalTriggers_IfaceConstants; - - virtual void writeExternalTriggers(unsigned char bitfield_index, tExternalTriggers value, tRioStatusCode *status) = 0; - virtual void writeExternalTriggers_ExternalClockSource_Channel(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual void writeExternalTriggers_ExternalClockSource_Module(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual void writeExternalTriggers_ExternalClockSource_AnalogTrigger(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0; - virtual void writeExternalTriggers_RisingEdge(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0; - virtual void writeExternalTriggers_FallingEdge(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0; - virtual tExternalTriggers readExternalTriggers(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual unsigned char readExternalTriggers_ExternalClockSource_Channel(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual unsigned char readExternalTriggers_ExternalClockSource_Module(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readExternalTriggers_ExternalClockSource_AnalogTrigger(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readExternalTriggers_RisingEdge(unsigned char bitfield_index, tRioStatusCode *status) = 0; - virtual bool readExternalTriggers_FallingEdge(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - - -private: - tDMA(const tDMA&); - void operator=(const tDMA&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_DMA_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_DMA_h__ +#define __nFRC_2015_1_0_5_DMA_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tDMA +{ +public: + tDMA(){} + virtual ~tDMA(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tDMA* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Pause : 1; + unsigned Enable_AI0_Low : 1; + unsigned Enable_AI0_High : 1; + unsigned Enable_AIAveraged0_Low : 1; + unsigned Enable_AIAveraged0_High : 1; + unsigned Enable_AI1_Low : 1; + unsigned Enable_AI1_High : 1; + unsigned Enable_AIAveraged1_Low : 1; + unsigned Enable_AIAveraged1_High : 1; + unsigned Enable_Accumulator0 : 1; + unsigned Enable_Accumulator1 : 1; + unsigned Enable_DI : 1; + unsigned Enable_AnalogTriggers : 1; + unsigned Enable_Counters_Low : 1; + unsigned Enable_Counters_High : 1; + unsigned Enable_CounterTimers_Low : 1; + unsigned Enable_CounterTimers_High : 1; + unsigned Enable_Encoders : 1; + unsigned Enable_EncoderTimers : 1; + unsigned ExternalClock : 1; +#else + unsigned ExternalClock : 1; + unsigned Enable_EncoderTimers : 1; + unsigned Enable_Encoders : 1; + unsigned Enable_CounterTimers_High : 1; + unsigned Enable_CounterTimers_Low : 1; + unsigned Enable_Counters_High : 1; + unsigned Enable_Counters_Low : 1; + unsigned Enable_AnalogTriggers : 1; + unsigned Enable_DI : 1; + unsigned Enable_Accumulator1 : 1; + unsigned Enable_Accumulator0 : 1; + unsigned Enable_AIAveraged1_High : 1; + unsigned Enable_AIAveraged1_Low : 1; + unsigned Enable_AI1_High : 1; + unsigned Enable_AI1_Low : 1; + unsigned Enable_AIAveraged0_High : 1; + unsigned Enable_AIAveraged0_Low : 1; + unsigned Enable_AI0_High : 1; + unsigned Enable_AI0_Low : 1; + unsigned Pause : 1; +#endif + }; + struct{ + unsigned value : 20; + }; + } tConfig; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned ExternalClockSource_Channel : 4; + unsigned ExternalClockSource_Module : 1; + unsigned ExternalClockSource_AnalogTrigger : 1; + unsigned RisingEdge : 1; + unsigned FallingEdge : 1; +#else + unsigned FallingEdge : 1; + unsigned RisingEdge : 1; + unsigned ExternalClockSource_AnalogTrigger : 1; + unsigned ExternalClockSource_Module : 1; + unsigned ExternalClockSource_Channel : 4; +#endif + }; + struct{ + unsigned value : 8; + }; + } tExternalTriggers; + + + + typedef enum + { + } tRate_IfaceConstants; + + virtual void writeRate(unsigned int value, tRioStatusCode *status) = 0; + virtual unsigned int readRate(tRioStatusCode *status) = 0; + + + typedef enum + { + } tConfig_IfaceConstants; + + virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; + virtual void writeConfig_Pause(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AI0_Low(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AI0_High(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AIAveraged0_Low(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AIAveraged0_High(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AI1_Low(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AI1_High(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AIAveraged1_Low(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AIAveraged1_High(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_Accumulator0(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_Accumulator1(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_DI(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_AnalogTriggers(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_Counters_Low(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_Counters_High(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_CounterTimers_Low(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_CounterTimers_High(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_Encoders(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable_EncoderTimers(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_ExternalClock(bool value, tRioStatusCode *status) = 0; + virtual tConfig readConfig(tRioStatusCode *status) = 0; + virtual bool readConfig_Pause(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AI0_Low(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AI0_High(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AIAveraged0_Low(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AIAveraged0_High(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AI1_Low(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AI1_High(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AIAveraged1_Low(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AIAveraged1_High(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_Accumulator0(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_Accumulator1(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_DI(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_AnalogTriggers(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_Counters_Low(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_Counters_High(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_CounterTimers_Low(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_CounterTimers_High(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_Encoders(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable_EncoderTimers(tRioStatusCode *status) = 0; + virtual bool readConfig_ExternalClock(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumExternalTriggersElements = 4, + } tExternalTriggers_IfaceConstants; + + virtual void writeExternalTriggers(unsigned char bitfield_index, tExternalTriggers value, tRioStatusCode *status) = 0; + virtual void writeExternalTriggers_ExternalClockSource_Channel(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual void writeExternalTriggers_ExternalClockSource_Module(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual void writeExternalTriggers_ExternalClockSource_AnalogTrigger(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0; + virtual void writeExternalTriggers_RisingEdge(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0; + virtual void writeExternalTriggers_FallingEdge(unsigned char bitfield_index, bool value, tRioStatusCode *status) = 0; + virtual tExternalTriggers readExternalTriggers(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual unsigned char readExternalTriggers_ExternalClockSource_Channel(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual unsigned char readExternalTriggers_ExternalClockSource_Module(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readExternalTriggers_ExternalClockSource_AnalogTrigger(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readExternalTriggers_RisingEdge(unsigned char bitfield_index, tRioStatusCode *status) = 0; + virtual bool readExternalTriggers_FallingEdge(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + + +private: + tDMA(const tDMA&); + void operator=(const tDMA&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_DMA_h__ diff --git a/hal/lib/Athena/ChipObject/tDMAManager.h b/hal/lib/Athena/ChipObject/tDMAManager.h index ce292b1592..1cc7b2fac3 100644 --- a/hal/lib/Athena/ChipObject/tDMAManager.h +++ b/hal/lib/Athena/ChipObject/tDMAManager.h @@ -1,46 +1,46 @@ -// Class for handling DMA transters. -// Copyright (c) National Instruments 2008. All Rights Reserved. - -#ifndef __tDMAManager_h__ -#define __tDMAManager_h__ - -#include "tSystem.h" - -namespace nFPGA -{ -// TODO: Implement DMA Manager -/* -class tDMAManager : public tSystem -{ -public: - tDMAManager(tNIRIO_u32 dmaChannel, tNIRIO_u32 hostBufferSize, tRioStatusCode *status); - ~tDMAManager(); - void start(tRioStatusCode *status); - void stop(tRioStatusCode *status); - bool isStarted() {return _started;} - void read( - tNIRIO_u32* buf, - tNIRIO_u32 num, - tNIRIO_u32 timeout, - tNIRIO_u32* read, - tNIRIO_u32* remaining, - tRioStatusCode *status); - void write( - tNIRIO_u32* buf, - tNIRIO_u32 num, - tNIRIO_u32 timeout, - tNIRIO_u32* remaining, - tRioStatusCode *status); -private: - bool _started; - tNIRIO_u32 _dmaChannel; - tNIRIO_u32 _hostBufferSize; - tDMAChannelDescriptor const *_dmaChannelDescriptor; - -}; -*/ -} - - -#endif // __tDMAManager_h__ - +// Class for handling DMA transters. +// Copyright (c) National Instruments 2008. All Rights Reserved. + +#ifndef __tDMAManager_h__ +#define __tDMAManager_h__ + +#include "tSystem.h" + +namespace nFPGA +{ +// TODO: Implement DMA Manager +/* +class tDMAManager : public tSystem +{ +public: + tDMAManager(tNIRIO_u32 dmaChannel, tNIRIO_u32 hostBufferSize, tRioStatusCode *status); + ~tDMAManager(); + void start(tRioStatusCode *status); + void stop(tRioStatusCode *status); + bool isStarted() {return _started;} + void read( + tNIRIO_u32* buf, + tNIRIO_u32 num, + tNIRIO_u32 timeout, + tNIRIO_u32* read, + tNIRIO_u32* remaining, + tRioStatusCode *status); + void write( + tNIRIO_u32* buf, + tNIRIO_u32 num, + tNIRIO_u32 timeout, + tNIRIO_u32* remaining, + tRioStatusCode *status); +private: + bool _started; + tNIRIO_u32 _dmaChannel; + tNIRIO_u32 _hostBufferSize; + tDMAChannelDescriptor const *_dmaChannelDescriptor; + +}; +*/ +} + + +#endif // __tDMAManager_h__ + diff --git a/hal/lib/Athena/ChipObject/tEncoder.h b/hal/lib/Athena/ChipObject/tEncoder.h index 7abfc1b926..8a0d806c09 100644 --- a/hal/lib/Athena/ChipObject/tEncoder.h +++ b/hal/lib/Athena/ChipObject/tEncoder.h @@ -1,199 +1,199 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Encoder_h__ -#define __nFRC_2015_1_0_4_Encoder_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tEncoder -{ -public: - tEncoder(){} - virtual ~tEncoder(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tEncoder* create(unsigned char sys_index, tRioStatusCode *status); - virtual unsigned char getSystemIndex() = 0; - - - typedef enum - { - kNumSystems = 4, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Direction : 1; - signed Value : 31; -#else - signed Value : 31; - unsigned Direction : 1; -#endif - }; - struct{ - unsigned value : 32; - }; - } tOutput; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned ASource_Channel : 4; - unsigned ASource_Module : 1; - unsigned ASource_AnalogTrigger : 1; - unsigned BSource_Channel : 4; - unsigned BSource_Module : 1; - unsigned BSource_AnalogTrigger : 1; - unsigned IndexSource_Channel : 4; - unsigned IndexSource_Module : 1; - unsigned IndexSource_AnalogTrigger : 1; - unsigned IndexActiveHigh : 1; - unsigned Reverse : 1; - unsigned Enable : 1; -#else - unsigned Enable : 1; - unsigned Reverse : 1; - unsigned IndexActiveHigh : 1; - unsigned IndexSource_AnalogTrigger : 1; - unsigned IndexSource_Module : 1; - unsigned IndexSource_Channel : 4; - unsigned BSource_AnalogTrigger : 1; - unsigned BSource_Module : 1; - unsigned BSource_Channel : 4; - unsigned ASource_AnalogTrigger : 1; - unsigned ASource_Module : 1; - unsigned ASource_Channel : 4; -#endif - }; - struct{ - unsigned value : 21; - }; - } tConfig; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Period : 23; - signed Count : 8; - unsigned Stalled : 1; -#else - unsigned Stalled : 1; - signed Count : 8; - unsigned Period : 23; -#endif - }; - struct{ - unsigned value : 32; - }; - } tTimerOutput; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned StallPeriod : 24; - unsigned AverageSize : 7; - unsigned UpdateWhenEmpty : 1; -#else - unsigned UpdateWhenEmpty : 1; - unsigned AverageSize : 7; - unsigned StallPeriod : 24; -#endif - }; - struct{ - unsigned value : 32; - }; - } tTimerConfig; - - - typedef enum - { - } tOutput_IfaceConstants; - - virtual tOutput readOutput(tRioStatusCode *status) = 0; - virtual bool readOutput_Direction(tRioStatusCode *status) = 0; - virtual signed int readOutput_Value(tRioStatusCode *status) = 0; - - - typedef enum - { - } tConfig_IfaceConstants; - - virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; - virtual void writeConfig_ASource_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_ASource_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_ASource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_BSource_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_BSource_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_BSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexSource_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexSource_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_IndexActiveHigh(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Reverse(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_Enable(bool value, tRioStatusCode *status) = 0; - virtual tConfig readConfig(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_ASource_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_ASource_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_ASource_AnalogTrigger(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_BSource_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_BSource_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_BSource_AnalogTrigger(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_IndexSource_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_IndexSource_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_IndexSource_AnalogTrigger(tRioStatusCode *status) = 0; - virtual bool readConfig_IndexActiveHigh(tRioStatusCode *status) = 0; - virtual bool readConfig_Reverse(tRioStatusCode *status) = 0; - virtual bool readConfig_Enable(tRioStatusCode *status) = 0; - - - typedef enum - { - } tTimerOutput_IfaceConstants; - - virtual tTimerOutput readTimerOutput(tRioStatusCode *status) = 0; - virtual unsigned int readTimerOutput_Period(tRioStatusCode *status) = 0; - virtual signed char readTimerOutput_Count(tRioStatusCode *status) = 0; - virtual bool readTimerOutput_Stalled(tRioStatusCode *status) = 0; - - - typedef enum - { - } tReset_IfaceConstants; - - virtual void strobeReset(tRioStatusCode *status) = 0; - - - typedef enum - { - } tTimerConfig_IfaceConstants; - - virtual void writeTimerConfig(tTimerConfig value, tRioStatusCode *status) = 0; - virtual void writeTimerConfig_StallPeriod(unsigned int value, tRioStatusCode *status) = 0; - virtual void writeTimerConfig_AverageSize(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeTimerConfig_UpdateWhenEmpty(bool value, tRioStatusCode *status) = 0; - virtual tTimerConfig readTimerConfig(tRioStatusCode *status) = 0; - virtual unsigned int readTimerConfig_StallPeriod(tRioStatusCode *status) = 0; - virtual unsigned char readTimerConfig_AverageSize(tRioStatusCode *status) = 0; - virtual bool readTimerConfig_UpdateWhenEmpty(tRioStatusCode *status) = 0; - - - - - -private: - tEncoder(const tEncoder&); - void operator=(const tEncoder&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Encoder_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Encoder_h__ +#define __nFRC_2015_1_0_5_Encoder_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tEncoder +{ +public: + tEncoder(){} + virtual ~tEncoder(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tEncoder* create(unsigned char sys_index, tRioStatusCode *status); + virtual unsigned char getSystemIndex() = 0; + + + typedef enum + { + kNumSystems = 4, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Direction : 1; + signed Value : 31; +#else + signed Value : 31; + unsigned Direction : 1; +#endif + }; + struct{ + unsigned value : 32; + }; + } tOutput; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned ASource_Channel : 4; + unsigned ASource_Module : 1; + unsigned ASource_AnalogTrigger : 1; + unsigned BSource_Channel : 4; + unsigned BSource_Module : 1; + unsigned BSource_AnalogTrigger : 1; + unsigned IndexSource_Channel : 4; + unsigned IndexSource_Module : 1; + unsigned IndexSource_AnalogTrigger : 1; + unsigned IndexActiveHigh : 1; + unsigned Reverse : 1; + unsigned Enable : 1; +#else + unsigned Enable : 1; + unsigned Reverse : 1; + unsigned IndexActiveHigh : 1; + unsigned IndexSource_AnalogTrigger : 1; + unsigned IndexSource_Module : 1; + unsigned IndexSource_Channel : 4; + unsigned BSource_AnalogTrigger : 1; + unsigned BSource_Module : 1; + unsigned BSource_Channel : 4; + unsigned ASource_AnalogTrigger : 1; + unsigned ASource_Module : 1; + unsigned ASource_Channel : 4; +#endif + }; + struct{ + unsigned value : 21; + }; + } tConfig; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Period : 23; + signed Count : 8; + unsigned Stalled : 1; +#else + unsigned Stalled : 1; + signed Count : 8; + unsigned Period : 23; +#endif + }; + struct{ + unsigned value : 32; + }; + } tTimerOutput; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned StallPeriod : 24; + unsigned AverageSize : 7; + unsigned UpdateWhenEmpty : 1; +#else + unsigned UpdateWhenEmpty : 1; + unsigned AverageSize : 7; + unsigned StallPeriod : 24; +#endif + }; + struct{ + unsigned value : 32; + }; + } tTimerConfig; + + + typedef enum + { + } tOutput_IfaceConstants; + + virtual tOutput readOutput(tRioStatusCode *status) = 0; + virtual bool readOutput_Direction(tRioStatusCode *status) = 0; + virtual signed int readOutput_Value(tRioStatusCode *status) = 0; + + + typedef enum + { + } tConfig_IfaceConstants; + + virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; + virtual void writeConfig_ASource_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_ASource_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_ASource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_BSource_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_BSource_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_BSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexSource_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexSource_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexSource_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_IndexActiveHigh(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Reverse(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_Enable(bool value, tRioStatusCode *status) = 0; + virtual tConfig readConfig(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_ASource_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_ASource_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_ASource_AnalogTrigger(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_BSource_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_BSource_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_BSource_AnalogTrigger(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_IndexSource_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_IndexSource_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_IndexSource_AnalogTrigger(tRioStatusCode *status) = 0; + virtual bool readConfig_IndexActiveHigh(tRioStatusCode *status) = 0; + virtual bool readConfig_Reverse(tRioStatusCode *status) = 0; + virtual bool readConfig_Enable(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTimerOutput_IfaceConstants; + + virtual tTimerOutput readTimerOutput(tRioStatusCode *status) = 0; + virtual unsigned int readTimerOutput_Period(tRioStatusCode *status) = 0; + virtual signed char readTimerOutput_Count(tRioStatusCode *status) = 0; + virtual bool readTimerOutput_Stalled(tRioStatusCode *status) = 0; + + + typedef enum + { + } tReset_IfaceConstants; + + virtual void strobeReset(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTimerConfig_IfaceConstants; + + virtual void writeTimerConfig(tTimerConfig value, tRioStatusCode *status) = 0; + virtual void writeTimerConfig_StallPeriod(unsigned int value, tRioStatusCode *status) = 0; + virtual void writeTimerConfig_AverageSize(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeTimerConfig_UpdateWhenEmpty(bool value, tRioStatusCode *status) = 0; + virtual tTimerConfig readTimerConfig(tRioStatusCode *status) = 0; + virtual unsigned int readTimerConfig_StallPeriod(tRioStatusCode *status) = 0; + virtual unsigned char readTimerConfig_AverageSize(tRioStatusCode *status) = 0; + virtual bool readTimerConfig_UpdateWhenEmpty(tRioStatusCode *status) = 0; + + + + + +private: + tEncoder(const tEncoder&); + void operator=(const tEncoder&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Encoder_h__ diff --git a/hal/lib/Athena/ChipObject/tGlobal.h b/hal/lib/Athena/ChipObject/tGlobal.h index 03b93b0df5..990d4a30ad 100644 --- a/hal/lib/Athena/ChipObject/tGlobal.h +++ b/hal/lib/Athena/ChipObject/tGlobal.h @@ -1,104 +1,104 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Global_h__ -#define __nFRC_2015_1_0_4_Global_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tGlobal -{ -public: - tGlobal(){} - virtual ~tGlobal(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tGlobal* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Radio : 8; - unsigned Comm : 8; - unsigned Mode : 8; - unsigned RSL : 1; -#else - unsigned RSL : 1; - unsigned Mode : 8; - unsigned Comm : 8; - unsigned Radio : 8; -#endif - }; - struct{ - unsigned value : 25; - }; - } tLEDs; - - - - typedef enum - { - } tLEDs_IfaceConstants; - - virtual void writeLEDs(tLEDs value, tRioStatusCode *status) = 0; - virtual void writeLEDs_Radio(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeLEDs_Comm(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeLEDs_Mode(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeLEDs_RSL(bool value, tRioStatusCode *status) = 0; - virtual tLEDs readLEDs(tRioStatusCode *status) = 0; - virtual unsigned char readLEDs_Radio(tRioStatusCode *status) = 0; - virtual unsigned char readLEDs_Comm(tRioStatusCode *status) = 0; - virtual unsigned char readLEDs_Mode(tRioStatusCode *status) = 0; - virtual bool readLEDs_RSL(tRioStatusCode *status) = 0; - - - typedef enum - { - } tVersion_IfaceConstants; - - virtual unsigned short readVersion(tRioStatusCode *status) = 0; - - - typedef enum - { - } tLocalTime_IfaceConstants; - - virtual unsigned int readLocalTime(tRioStatusCode *status) = 0; - - - typedef enum - { - } tUserButton_IfaceConstants; - - virtual bool readUserButton(tRioStatusCode *status) = 0; - - - typedef enum - { - } tRevision_IfaceConstants; - - virtual unsigned int readRevision(tRioStatusCode *status) = 0; - - - - -private: - tGlobal(const tGlobal&); - void operator=(const tGlobal&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Global_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Global_h__ +#define __nFRC_2015_1_0_5_Global_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tGlobal +{ +public: + tGlobal(){} + virtual ~tGlobal(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tGlobal* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Radio : 8; + unsigned Comm : 8; + unsigned Mode : 8; + unsigned RSL : 1; +#else + unsigned RSL : 1; + unsigned Mode : 8; + unsigned Comm : 8; + unsigned Radio : 8; +#endif + }; + struct{ + unsigned value : 25; + }; + } tLEDs; + + + + typedef enum + { + } tLEDs_IfaceConstants; + + virtual void writeLEDs(tLEDs value, tRioStatusCode *status) = 0; + virtual void writeLEDs_Radio(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeLEDs_Comm(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeLEDs_Mode(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeLEDs_RSL(bool value, tRioStatusCode *status) = 0; + virtual tLEDs readLEDs(tRioStatusCode *status) = 0; + virtual unsigned char readLEDs_Radio(tRioStatusCode *status) = 0; + virtual unsigned char readLEDs_Comm(tRioStatusCode *status) = 0; + virtual unsigned char readLEDs_Mode(tRioStatusCode *status) = 0; + virtual bool readLEDs_RSL(tRioStatusCode *status) = 0; + + + typedef enum + { + } tVersion_IfaceConstants; + + virtual unsigned short readVersion(tRioStatusCode *status) = 0; + + + typedef enum + { + } tLocalTime_IfaceConstants; + + virtual unsigned int readLocalTime(tRioStatusCode *status) = 0; + + + typedef enum + { + } tUserButton_IfaceConstants; + + virtual bool readUserButton(tRioStatusCode *status) = 0; + + + typedef enum + { + } tRevision_IfaceConstants; + + virtual unsigned int readRevision(tRioStatusCode *status) = 0; + + + + +private: + tGlobal(const tGlobal&); + void operator=(const tGlobal&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Global_h__ diff --git a/hal/lib/Athena/ChipObject/tInterrupt.h b/hal/lib/Athena/ChipObject/tInterrupt.h index a6275b6cf7..be319dd89d 100644 --- a/hal/lib/Athena/ChipObject/tInterrupt.h +++ b/hal/lib/Athena/ChipObject/tInterrupt.h @@ -1,93 +1,93 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Interrupt_h__ -#define __nFRC_2015_1_0_4_Interrupt_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tInterrupt -{ -public: - tInterrupt(){} - virtual ~tInterrupt(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tInterrupt* create(unsigned char sys_index, tRioStatusCode *status); - virtual unsigned char getSystemIndex() = 0; - - - typedef enum - { - kNumSystems = 8, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Source_Channel : 4; - unsigned Source_Module : 1; - unsigned Source_AnalogTrigger : 1; - unsigned RisingEdge : 1; - unsigned FallingEdge : 1; - unsigned WaitForAck : 1; -#else - unsigned WaitForAck : 1; - unsigned FallingEdge : 1; - unsigned RisingEdge : 1; - unsigned Source_AnalogTrigger : 1; - unsigned Source_Module : 1; - unsigned Source_Channel : 4; -#endif - }; - struct{ - unsigned value : 9; - }; - } tConfig; - - - typedef enum - { - } tTimeStamp_IfaceConstants; - - virtual unsigned int readTimeStamp(tRioStatusCode *status) = 0; - - - typedef enum - { - } tConfig_IfaceConstants; - - virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; - virtual void writeConfig_Source_Channel(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_Source_Module(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeConfig_Source_AnalogTrigger(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_RisingEdge(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_FallingEdge(bool value, tRioStatusCode *status) = 0; - virtual void writeConfig_WaitForAck(bool value, tRioStatusCode *status) = 0; - virtual tConfig readConfig(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_Source_Channel(tRioStatusCode *status) = 0; - virtual unsigned char readConfig_Source_Module(tRioStatusCode *status) = 0; - virtual bool readConfig_Source_AnalogTrigger(tRioStatusCode *status) = 0; - virtual bool readConfig_RisingEdge(tRioStatusCode *status) = 0; - virtual bool readConfig_FallingEdge(tRioStatusCode *status) = 0; - virtual bool readConfig_WaitForAck(tRioStatusCode *status) = 0; - - - - - -private: - tInterrupt(const tInterrupt&); - void operator=(const tInterrupt&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Interrupt_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Interrupt_h__ +#define __nFRC_2015_1_0_5_Interrupt_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tInterrupt +{ +public: + tInterrupt(){} + virtual ~tInterrupt(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tInterrupt* create(unsigned char sys_index, tRioStatusCode *status); + virtual unsigned char getSystemIndex() = 0; + + + typedef enum + { + kNumSystems = 8, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Source_Channel : 4; + unsigned Source_Module : 1; + unsigned Source_AnalogTrigger : 1; + unsigned RisingEdge : 1; + unsigned FallingEdge : 1; + unsigned WaitForAck : 1; +#else + unsigned WaitForAck : 1; + unsigned FallingEdge : 1; + unsigned RisingEdge : 1; + unsigned Source_AnalogTrigger : 1; + unsigned Source_Module : 1; + unsigned Source_Channel : 4; +#endif + }; + struct{ + unsigned value : 9; + }; + } tConfig; + + + typedef enum + { + } tTimeStamp_IfaceConstants; + + virtual unsigned int readTimeStamp(tRioStatusCode *status) = 0; + + + typedef enum + { + } tConfig_IfaceConstants; + + virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; + virtual void writeConfig_Source_Channel(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_Source_Module(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeConfig_Source_AnalogTrigger(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_RisingEdge(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_FallingEdge(bool value, tRioStatusCode *status) = 0; + virtual void writeConfig_WaitForAck(bool value, tRioStatusCode *status) = 0; + virtual tConfig readConfig(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_Source_Channel(tRioStatusCode *status) = 0; + virtual unsigned char readConfig_Source_Module(tRioStatusCode *status) = 0; + virtual bool readConfig_Source_AnalogTrigger(tRioStatusCode *status) = 0; + virtual bool readConfig_RisingEdge(tRioStatusCode *status) = 0; + virtual bool readConfig_FallingEdge(tRioStatusCode *status) = 0; + virtual bool readConfig_WaitForAck(tRioStatusCode *status) = 0; + + + + + +private: + tInterrupt(const tInterrupt&); + void operator=(const tInterrupt&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Interrupt_h__ diff --git a/hal/lib/Athena/ChipObject/tInterruptManager.h b/hal/lib/Athena/ChipObject/tInterruptManager.h index b8fb361845..c7d631a0cb 100644 --- a/hal/lib/Athena/ChipObject/tInterruptManager.h +++ b/hal/lib/Athena/ChipObject/tInterruptManager.h @@ -1,61 +1,61 @@ -// Class for handling interrupts. -// Copyright (c) National Instruments 2008. All Rights Reserved. - -#ifndef __tInterruptManager_h__ -#define __tInterruptManager_h__ - -#include "tSystem.h" - -namespace ni -{ - namespace dsc - { - namespace osdep - { - class CriticalSection; - } - } -} - -namespace nFPGA -{ - -typedef void (*tInterruptHandler)(uint32_t interruptAssertedMask, void *param); - -class tInterruptManager : public tSystem -{ -public: - tInterruptManager(uint32_t interruptMask, bool watcher, tRioStatusCode *status); - ~tInterruptManager(); - void registerHandler(tInterruptHandler handler, void *param, tRioStatusCode *status); - uint32_t watch(int32_t timeoutInMs, tRioStatusCode *status); - void enable(tRioStatusCode *status); - void disable(tRioStatusCode *status); - bool isEnabled(tRioStatusCode *status); -private: - class tInterruptThread; - friend class tInterruptThread; - void handler(); - static int handlerWrapper(tInterruptManager *pInterrupt); - - void acknowledge(tRioStatusCode *status); - void reserve(tRioStatusCode *status); - void unreserve(tRioStatusCode *status); - tInterruptHandler _handler; - uint32_t _interruptMask; - tInterruptThread *_thread; - NiFpga_IrqContext _rioContext; - bool _watcher; - bool _enabled; - void *_userParam; - - // maintain the interrupts that are already dealt with. - static uint32_t _globalInterruptMask; - static ni::dsc::osdep::CriticalSection *_globalInterruptMaskSemaphore; -}; - -} - - -#endif // __tInterruptManager_h__ - +// Class for handling interrupts. +// Copyright (c) National Instruments 2008. All Rights Reserved. + +#ifndef __tInterruptManager_h__ +#define __tInterruptManager_h__ + +#include "tSystem.h" + +namespace ni +{ + namespace dsc + { + namespace osdep + { + class CriticalSection; + } + } +} + +namespace nFPGA +{ + +typedef void (*tInterruptHandler)(uint32_t interruptAssertedMask, void *param); + +class tInterruptManager : public tSystem +{ +public: + tInterruptManager(uint32_t interruptMask, bool watcher, tRioStatusCode *status); + ~tInterruptManager(); + void registerHandler(tInterruptHandler handler, void *param, tRioStatusCode *status); + uint32_t watch(int32_t timeoutInMs, tRioStatusCode *status); + void enable(tRioStatusCode *status); + void disable(tRioStatusCode *status); + bool isEnabled(tRioStatusCode *status); +private: + class tInterruptThread; + friend class tInterruptThread; + void handler(); + static int handlerWrapper(tInterruptManager *pInterrupt); + + void acknowledge(tRioStatusCode *status); + void reserve(tRioStatusCode *status); + void unreserve(tRioStatusCode *status); + tInterruptHandler _handler; + uint32_t _interruptMask; + tInterruptThread *_thread; + NiFpga_IrqContext _rioContext; + bool _watcher; + bool _enabled; + void *_userParam; + + // maintain the interrupts that are already dealt with. + static uint32_t _globalInterruptMask; + static ni::dsc::osdep::CriticalSection *_globalInterruptMaskSemaphore; +}; + +} + + +#endif // __tInterruptManager_h__ + diff --git a/hal/lib/Athena/ChipObject/tPWM.h b/hal/lib/Athena/ChipObject/tPWM.h index c0b2e08cb6..1362293a96 100644 --- a/hal/lib/Athena/ChipObject/tPWM.h +++ b/hal/lib/Athena/ChipObject/tPWM.h @@ -1,111 +1,111 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_PWM_h__ -#define __nFRC_2015_1_0_4_PWM_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tPWM -{ -public: - tPWM(){} - virtual ~tPWM(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tPWM* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Period : 16; - unsigned MinHigh : 16; -#else - unsigned MinHigh : 16; - unsigned Period : 16; -#endif - }; - struct{ - unsigned value : 32; - }; - } tConfig; - - - - typedef enum - { - } tConfig_IfaceConstants; - - virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; - virtual void writeConfig_Period(unsigned short value, tRioStatusCode *status) = 0; - virtual void writeConfig_MinHigh(unsigned short value, tRioStatusCode *status) = 0; - virtual tConfig readConfig(tRioStatusCode *status) = 0; - virtual unsigned short readConfig_Period(tRioStatusCode *status) = 0; - virtual unsigned short readConfig_MinHigh(tRioStatusCode *status) = 0; - - - typedef enum - { - } tLoopTiming_IfaceConstants; - - virtual unsigned short readLoopTiming(tRioStatusCode *status) = 0; - - - typedef enum - { - kNumPeriodScaleMXPElements = 10, - } tPeriodScaleMXP_IfaceConstants; - - virtual void writePeriodScaleMXP(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readPeriodScaleMXP(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumPeriodScaleHdrElements = 10, - } tPeriodScaleHdr_IfaceConstants; - - virtual void writePeriodScaleHdr(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; - virtual unsigned char readPeriodScaleHdr(unsigned char bitfield_index, tRioStatusCode *status) = 0; - - - - - typedef enum - { - kNumHdrRegisters = 10, - } tHdr_IfaceConstants; - - virtual void writeHdr(unsigned char reg_index, unsigned short value, tRioStatusCode *status) = 0; - virtual unsigned short readHdr(unsigned char reg_index, tRioStatusCode *status) = 0; - - - typedef enum - { - kNumMXPRegisters = 10, - } tMXP_IfaceConstants; - - virtual void writeMXP(unsigned char reg_index, unsigned short value, tRioStatusCode *status) = 0; - virtual unsigned short readMXP(unsigned char reg_index, tRioStatusCode *status) = 0; - - -private: - tPWM(const tPWM&); - void operator=(const tPWM&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_PWM_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_PWM_h__ +#define __nFRC_2015_1_0_5_PWM_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tPWM +{ +public: + tPWM(){} + virtual ~tPWM(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tPWM* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Period : 16; + unsigned MinHigh : 16; +#else + unsigned MinHigh : 16; + unsigned Period : 16; +#endif + }; + struct{ + unsigned value : 32; + }; + } tConfig; + + + + typedef enum + { + } tConfig_IfaceConstants; + + virtual void writeConfig(tConfig value, tRioStatusCode *status) = 0; + virtual void writeConfig_Period(unsigned short value, tRioStatusCode *status) = 0; + virtual void writeConfig_MinHigh(unsigned short value, tRioStatusCode *status) = 0; + virtual tConfig readConfig(tRioStatusCode *status) = 0; + virtual unsigned short readConfig_Period(tRioStatusCode *status) = 0; + virtual unsigned short readConfig_MinHigh(tRioStatusCode *status) = 0; + + + typedef enum + { + } tLoopTiming_IfaceConstants; + + virtual unsigned short readLoopTiming(tRioStatusCode *status) = 0; + + + typedef enum + { + kNumPeriodScaleMXPElements = 10, + } tPeriodScaleMXP_IfaceConstants; + + virtual void writePeriodScaleMXP(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readPeriodScaleMXP(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumPeriodScaleHdrElements = 10, + } tPeriodScaleHdr_IfaceConstants; + + virtual void writePeriodScaleHdr(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readPeriodScaleHdr(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + + + typedef enum + { + kNumHdrRegisters = 10, + } tHdr_IfaceConstants; + + virtual void writeHdr(unsigned char reg_index, unsigned short value, tRioStatusCode *status) = 0; + virtual unsigned short readHdr(unsigned char reg_index, tRioStatusCode *status) = 0; + + + typedef enum + { + kNumMXPRegisters = 10, + } tMXP_IfaceConstants; + + virtual void writeMXP(unsigned char reg_index, unsigned short value, tRioStatusCode *status) = 0; + virtual unsigned short readMXP(unsigned char reg_index, tRioStatusCode *status) = 0; + + +private: + tPWM(const tPWM&); + void operator=(const tPWM&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_PWM_h__ diff --git a/hal/lib/Athena/ChipObject/tPower.h b/hal/lib/Athena/ChipObject/tPower.h index f9fc7a8b8e..ad859c9a6b 100644 --- a/hal/lib/Athena/ChipObject/tPower.h +++ b/hal/lib/Athena/ChipObject/tPower.h @@ -1,107 +1,107 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Power_h__ -#define __nFRC_2015_1_0_4_Power_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tPower -{ -public: - tPower(){} - virtual ~tPower(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tPower* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned User3V3 : 8; - unsigned User5V : 8; - unsigned User6V : 8; -#else - unsigned User6V : 8; - unsigned User5V : 8; - unsigned User3V3 : 8; -#endif - }; - struct{ - unsigned value : 24; - }; - } tStatus; - typedef - union{ - struct{ -#ifdef __vxworks - unsigned User3V3 : 1; - unsigned User5V : 1; - unsigned User6V : 1; -#else - unsigned User6V : 1; - unsigned User5V : 1; - unsigned User3V3 : 1; -#endif - }; - struct{ - unsigned value : 3; - }; - } tDisable; - - - - typedef enum - { - } tStatus_IfaceConstants; - - virtual tStatus readStatus(tRioStatusCode *status) = 0; - virtual unsigned char readStatus_User3V3(tRioStatusCode *status) = 0; - virtual unsigned char readStatus_User5V(tRioStatusCode *status) = 0; - virtual unsigned char readStatus_User6V(tRioStatusCode *status) = 0; - - - typedef enum - { - } tDisable_IfaceConstants; - - virtual void writeDisable(tDisable value, tRioStatusCode *status) = 0; - virtual void writeDisable_User3V3(bool value, tRioStatusCode *status) = 0; - virtual void writeDisable_User5V(bool value, tRioStatusCode *status) = 0; - virtual void writeDisable_User6V(bool value, tRioStatusCode *status) = 0; - virtual tDisable readDisable(tRioStatusCode *status) = 0; - virtual bool readDisable_User3V3(tRioStatusCode *status) = 0; - virtual bool readDisable_User5V(tRioStatusCode *status) = 0; - virtual bool readDisable_User6V(tRioStatusCode *status) = 0; - - - typedef enum - { - } tIndicateOutOfRange_IfaceConstants; - - virtual void writeIndicateOutOfRange(bool value, tRioStatusCode *status) = 0; - virtual bool readIndicateOutOfRange(tRioStatusCode *status) = 0; - - - - -private: - tPower(const tPower&); - void operator=(const tPower&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Power_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Power_h__ +#define __nFRC_2015_1_0_5_Power_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tPower +{ +public: + tPower(){} + virtual ~tPower(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tPower* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned User3V3 : 8; + unsigned User5V : 8; + unsigned User6V : 8; +#else + unsigned User6V : 8; + unsigned User5V : 8; + unsigned User3V3 : 8; +#endif + }; + struct{ + unsigned value : 24; + }; + } tStatus; + typedef + union{ + struct{ +#ifdef __vxworks + unsigned User3V3 : 1; + unsigned User5V : 1; + unsigned User6V : 1; +#else + unsigned User6V : 1; + unsigned User5V : 1; + unsigned User3V3 : 1; +#endif + }; + struct{ + unsigned value : 3; + }; + } tDisable; + + + + typedef enum + { + } tStatus_IfaceConstants; + + virtual tStatus readStatus(tRioStatusCode *status) = 0; + virtual unsigned char readStatus_User3V3(tRioStatusCode *status) = 0; + virtual unsigned char readStatus_User5V(tRioStatusCode *status) = 0; + virtual unsigned char readStatus_User6V(tRioStatusCode *status) = 0; + + + typedef enum + { + } tDisable_IfaceConstants; + + virtual void writeDisable(tDisable value, tRioStatusCode *status) = 0; + virtual void writeDisable_User3V3(bool value, tRioStatusCode *status) = 0; + virtual void writeDisable_User5V(bool value, tRioStatusCode *status) = 0; + virtual void writeDisable_User6V(bool value, tRioStatusCode *status) = 0; + virtual tDisable readDisable(tRioStatusCode *status) = 0; + virtual bool readDisable_User3V3(tRioStatusCode *status) = 0; + virtual bool readDisable_User5V(tRioStatusCode *status) = 0; + virtual bool readDisable_User6V(tRioStatusCode *status) = 0; + + + typedef enum + { + } tIndicateOutOfRange_IfaceConstants; + + virtual void writeIndicateOutOfRange(bool value, tRioStatusCode *status) = 0; + virtual bool readIndicateOutOfRange(tRioStatusCode *status) = 0; + + + + +private: + tPower(const tPower&); + void operator=(const tPower&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Power_h__ diff --git a/hal/lib/Athena/ChipObject/tRelay.h b/hal/lib/Athena/ChipObject/tRelay.h index 3edfb66b04..a2f72b7f54 100644 --- a/hal/lib/Athena/ChipObject/tRelay.h +++ b/hal/lib/Athena/ChipObject/tRelay.h @@ -1,68 +1,68 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_Relay_h__ -#define __nFRC_2015_1_0_4_Relay_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tRelay -{ -public: - tRelay(){} - virtual ~tRelay(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tRelay* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Forward : 4; - unsigned Reverse : 4; -#else - unsigned Reverse : 4; - unsigned Forward : 4; -#endif - }; - struct{ - unsigned value : 8; - }; - } tValue; - - - - typedef enum - { - } tValue_IfaceConstants; - - virtual void writeValue(tValue value, tRioStatusCode *status) = 0; - virtual void writeValue_Forward(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeValue_Reverse(unsigned char value, tRioStatusCode *status) = 0; - virtual tValue readValue(tRioStatusCode *status) = 0; - virtual unsigned char readValue_Forward(tRioStatusCode *status) = 0; - virtual unsigned char readValue_Reverse(tRioStatusCode *status) = 0; - - - - -private: - tRelay(const tRelay&); - void operator=(const tRelay&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_Relay_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_Relay_h__ +#define __nFRC_2015_1_0_5_Relay_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tRelay +{ +public: + tRelay(){} + virtual ~tRelay(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tRelay* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Forward : 4; + unsigned Reverse : 4; +#else + unsigned Reverse : 4; + unsigned Forward : 4; +#endif + }; + struct{ + unsigned value : 8; + }; + } tValue; + + + + typedef enum + { + } tValue_IfaceConstants; + + virtual void writeValue(tValue value, tRioStatusCode *status) = 0; + virtual void writeValue_Forward(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeValue_Reverse(unsigned char value, tRioStatusCode *status) = 0; + virtual tValue readValue(tRioStatusCode *status) = 0; + virtual unsigned char readValue_Forward(tRioStatusCode *status) = 0; + virtual unsigned char readValue_Reverse(tRioStatusCode *status) = 0; + + + + +private: + tRelay(const tRelay&); + void operator=(const tRelay&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_Relay_h__ diff --git a/hal/lib/Athena/ChipObject/tSPI.h b/hal/lib/Athena/ChipObject/tSPI.h index d8c4e7679e..ce45acfa9b 100644 --- a/hal/lib/Athena/ChipObject/tSPI.h +++ b/hal/lib/Athena/ChipObject/tSPI.h @@ -1,68 +1,68 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_SPI_h__ -#define __nFRC_2015_1_0_4_SPI_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tSPI -{ -public: - tSPI(){} - virtual ~tSPI(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tSPI* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned Hdr : 4; - unsigned MXP : 1; -#else - unsigned MXP : 1; - unsigned Hdr : 4; -#endif - }; - struct{ - unsigned value : 5; - }; - } tChipSelectActiveHigh; - - - - typedef enum - { - } tChipSelectActiveHigh_IfaceConstants; - - virtual void writeChipSelectActiveHigh(tChipSelectActiveHigh value, tRioStatusCode *status) = 0; - virtual void writeChipSelectActiveHigh_Hdr(unsigned char value, tRioStatusCode *status) = 0; - virtual void writeChipSelectActiveHigh_MXP(unsigned char value, tRioStatusCode *status) = 0; - virtual tChipSelectActiveHigh readChipSelectActiveHigh(tRioStatusCode *status) = 0; - virtual unsigned char readChipSelectActiveHigh_Hdr(tRioStatusCode *status) = 0; - virtual unsigned char readChipSelectActiveHigh_MXP(tRioStatusCode *status) = 0; - - - - -private: - tSPI(const tSPI&); - void operator=(const tSPI&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_SPI_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_SPI_h__ +#define __nFRC_2015_1_0_5_SPI_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tSPI +{ +public: + tSPI(){} + virtual ~tSPI(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tSPI* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned Hdr : 4; + unsigned MXP : 1; +#else + unsigned MXP : 1; + unsigned Hdr : 4; +#endif + }; + struct{ + unsigned value : 5; + }; + } tChipSelectActiveHigh; + + + + typedef enum + { + } tChipSelectActiveHigh_IfaceConstants; + + virtual void writeChipSelectActiveHigh(tChipSelectActiveHigh value, tRioStatusCode *status) = 0; + virtual void writeChipSelectActiveHigh_Hdr(unsigned char value, tRioStatusCode *status) = 0; + virtual void writeChipSelectActiveHigh_MXP(unsigned char value, tRioStatusCode *status) = 0; + virtual tChipSelectActiveHigh readChipSelectActiveHigh(tRioStatusCode *status) = 0; + virtual unsigned char readChipSelectActiveHigh_Hdr(tRioStatusCode *status) = 0; + virtual unsigned char readChipSelectActiveHigh_MXP(tRioStatusCode *status) = 0; + + + + +private: + tSPI(const tSPI&); + void operator=(const tSPI&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_SPI_h__ diff --git a/hal/lib/Athena/ChipObject/tSolenoid.h b/hal/lib/Athena/ChipObject/tSolenoid.h new file mode 100644 index 0000000000..8627eea6cc --- /dev/null +++ b/hal/lib/Athena/ChipObject/tSolenoid.h @@ -0,0 +1,50 @@ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2012_1_6_4_Solenoid_h__ +#define __nFRC_2012_1_6_4_Solenoid_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2012_1_6_4 +{ + +class tSolenoid +{ +public: + tSolenoid(){} + virtual ~tSolenoid(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tSolenoid* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + + + + typedef enum + { + kNumDO7_0Elements = 2, + } tDO7_0_IfaceConstants; + + virtual void writeDO7_0(unsigned char bitfield_index, unsigned char value, tRioStatusCode *status) = 0; + virtual unsigned char readDO7_0(unsigned char bitfield_index, tRioStatusCode *status) = 0; + + + + +private: + tSolenoid(const tSolenoid&); + void operator=(const tSolenoid&); +}; + +} +} + +#endif // __nFRC_2012_1_6_4_Solenoid_h__ diff --git a/hal/lib/Athena/ChipObject/tSysWatchdog.h b/hal/lib/Athena/ChipObject/tSysWatchdog.h index 1cb207d2f7..abb18158f9 100644 --- a/hal/lib/Athena/ChipObject/tSysWatchdog.h +++ b/hal/lib/Athena/ChipObject/tSysWatchdog.h @@ -1,101 +1,101 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. -// Do Not Edit... this file is generated! - -#ifndef __nFRC_2015_1_0_4_SysWatchdog_h__ -#define __nFRC_2015_1_0_4_SysWatchdog_h__ - -#include "tSystemInterface.h" - -namespace nFPGA -{ -namespace nFRC_2015_1_0_4 -{ - -class tSysWatchdog -{ -public: - tSysWatchdog(){} - virtual ~tSysWatchdog(){} - - virtual tSystemInterface* getSystemInterface() = 0; - static tSysWatchdog* create(tRioStatusCode *status); - - typedef enum - { - kNumSystems = 1, - } tIfaceConstants; - - typedef - union{ - struct{ -#ifdef __vxworks - unsigned SystemActive : 1; - unsigned PowerAlive : 1; - unsigned SysDisableCount : 15; - unsigned PowerDisableCount : 15; -#else - unsigned PowerDisableCount : 15; - unsigned SysDisableCount : 15; - unsigned PowerAlive : 1; - unsigned SystemActive : 1; -#endif - }; - struct{ - unsigned value : 32; - }; - } tStatus; - - - - typedef enum - { - } tStatus_IfaceConstants; - - virtual tStatus readStatus(tRioStatusCode *status) = 0; - virtual bool readStatus_SystemActive(tRioStatusCode *status) = 0; - virtual bool readStatus_PowerAlive(tRioStatusCode *status) = 0; - virtual unsigned short readStatus_SysDisableCount(tRioStatusCode *status) = 0; - virtual unsigned short readStatus_PowerDisableCount(tRioStatusCode *status) = 0; - - - typedef enum - { - } tCommand_IfaceConstants; - - virtual void writeCommand(unsigned short value, tRioStatusCode *status) = 0; - virtual unsigned short readCommand(tRioStatusCode *status) = 0; - - - typedef enum - { - } tChallenge_IfaceConstants; - - virtual unsigned char readChallenge(tRioStatusCode *status) = 0; - - - typedef enum - { - } tActive_IfaceConstants; - - virtual void writeActive(bool value, tRioStatusCode *status) = 0; - virtual bool readActive(tRioStatusCode *status) = 0; - - - typedef enum - { - } tTimer_IfaceConstants; - - virtual unsigned int readTimer(tRioStatusCode *status) = 0; - - - - -private: - tSysWatchdog(const tSysWatchdog&); - void operator=(const tSysWatchdog&); -}; - -} -} - -#endif // __nFRC_2015_1_0_4_SysWatchdog_h__ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2015_1_0_5_SysWatchdog_h__ +#define __nFRC_2015_1_0_5_SysWatchdog_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2015_1_0_5 +{ + +class tSysWatchdog +{ +public: + tSysWatchdog(){} + virtual ~tSysWatchdog(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tSysWatchdog* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned SystemActive : 1; + unsigned PowerAlive : 1; + unsigned SysDisableCount : 15; + unsigned PowerDisableCount : 15; +#else + unsigned PowerDisableCount : 15; + unsigned SysDisableCount : 15; + unsigned PowerAlive : 1; + unsigned SystemActive : 1; +#endif + }; + struct{ + unsigned value : 32; + }; + } tStatus; + + + + typedef enum + { + } tStatus_IfaceConstants; + + virtual tStatus readStatus(tRioStatusCode *status) = 0; + virtual bool readStatus_SystemActive(tRioStatusCode *status) = 0; + virtual bool readStatus_PowerAlive(tRioStatusCode *status) = 0; + virtual unsigned short readStatus_SysDisableCount(tRioStatusCode *status) = 0; + virtual unsigned short readStatus_PowerDisableCount(tRioStatusCode *status) = 0; + + + typedef enum + { + } tCommand_IfaceConstants; + + virtual void writeCommand(unsigned short value, tRioStatusCode *status) = 0; + virtual unsigned short readCommand(tRioStatusCode *status) = 0; + + + typedef enum + { + } tChallenge_IfaceConstants; + + virtual unsigned char readChallenge(tRioStatusCode *status) = 0; + + + typedef enum + { + } tActive_IfaceConstants; + + virtual void writeActive(bool value, tRioStatusCode *status) = 0; + virtual bool readActive(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTimer_IfaceConstants; + + virtual unsigned int readTimer(tRioStatusCode *status) = 0; + + + + +private: + tSysWatchdog(const tSysWatchdog&); + void operator=(const tSysWatchdog&); +}; + +} +} + +#endif // __nFRC_2015_1_0_5_SysWatchdog_h__ diff --git a/hal/lib/Athena/ChipObject/tSystem.h b/hal/lib/Athena/ChipObject/tSystem.h index eb55be1772..412d76d701 100644 --- a/hal/lib/Athena/ChipObject/tSystem.h +++ b/hal/lib/Athena/ChipObject/tSystem.h @@ -1,47 +1,47 @@ -// Base class for generated chip objects -// Copyright (c) National Instruments 2008. All Rights Reserved. - -#ifndef __tSystem_h__ -#define __tSystem_h__ - -#include "fpgainterfacecapi/NiFpga.h" -typedef NiFpga_Status tRioStatusCode; - -#define FRC_FPGA_PRELOAD_BITFILE - -typedef uint32_t NiFpga_Session; - -namespace nFPGA -{ - -class tSystem -{ -public: - tSystem(tRioStatusCode *status); - ~tSystem(); - void getFpgaGuid(uint32_t *guid_ptr, tRioStatusCode *status); - -protected: - static NiFpga_Session _DeviceHandle; - -#ifdef FRC_FPGA_PRELOAD_BITFILE - void NiFpga_SharedOpen_common(const char* bitfile); - NiFpga_Status NiFpga_SharedOpen(const char* bitfile, - const char* signature, - const char* resource, - uint32_t attribute, - NiFpga_Session* session); - NiFpga_Status NiFpgaLv_SharedOpen(const char* const bitfile, - const char* const apiSignature, - const char* const resource, - const uint32_t attribute, - NiFpga_Session* const session); -private: - static char *_FileName; - static char *_Bitfile; -#endif -}; - -} - -#endif // __tSystem_h__ +// Base class for generated chip objects +// Copyright (c) National Instruments 2008. All Rights Reserved. + +#ifndef __tSystem_h__ +#define __tSystem_h__ + +#include "fpgainterfacecapi/NiFpga.h" +typedef NiFpga_Status tRioStatusCode; + +#define FRC_FPGA_PRELOAD_BITFILE + +typedef uint32_t NiFpga_Session; + +namespace nFPGA +{ + +class tSystem +{ +public: + tSystem(tRioStatusCode *status); + ~tSystem(); + void getFpgaGuid(uint32_t *guid_ptr, tRioStatusCode *status); + +protected: + static NiFpga_Session _DeviceHandle; + +#ifdef FRC_FPGA_PRELOAD_BITFILE + void NiFpga_SharedOpen_common(const char* bitfile); + NiFpga_Status NiFpga_SharedOpen(const char* bitfile, + const char* signature, + const char* resource, + uint32_t attribute, + NiFpga_Session* session); + NiFpga_Status NiFpgaLv_SharedOpen(const char* const bitfile, + const char* const apiSignature, + const char* const resource, + const uint32_t attribute, + NiFpga_Session* const session); +private: + static char *_FileName; + static char *_Bitfile; +#endif +}; + +} + +#endif // __tSystem_h__ diff --git a/hal/lib/Athena/ChipObject/tSystemInterface.h b/hal/lib/Athena/ChipObject/tSystemInterface.h index d5008e1f5a..d13e93222b 100644 --- a/hal/lib/Athena/ChipObject/tSystemInterface.h +++ b/hal/lib/Athena/ChipObject/tSystemInterface.h @@ -1,26 +1,26 @@ -// Copyright (c) National Instruments 2008. All Rights Reserved. - -#ifndef __tSystemInterface_h__ -#define __tSystemInterface_h__ - -namespace nFPGA -{ - -class tSystemInterface -{ -public: - tSystemInterface(){} - virtual ~tSystemInterface(){} - - virtual uint16_t getExpectedFPGAVersion()=0; - virtual uint32_t getExpectedFPGARevision()=0; - virtual uint32_t * getExpectedFPGASignature()=0; - virtual void getHardwareFpgaSignature(uint32_t *guid_ptr, tRioStatusCode *status)=0; - virtual uint32_t getLVHandle(tRioStatusCode *status)=0; - virtual uint32_t getHandle()=0; -}; - -} - -#endif // __tSystemInterface_h__ - +// Copyright (c) National Instruments 2008. All Rights Reserved. + +#ifndef __tSystemInterface_h__ +#define __tSystemInterface_h__ + +namespace nFPGA +{ + +class tSystemInterface +{ +public: + tSystemInterface(){} + virtual ~tSystemInterface(){} + + virtual const uint16_t getExpectedFPGAVersion()=0; + virtual const uint32_t getExpectedFPGARevision()=0; + virtual const uint32_t * const getExpectedFPGASignature()=0; + virtual void getHardwareFpgaSignature(uint32_t *guid_ptr, tRioStatusCode *status)=0; + virtual uint32_t getLVHandle(tRioStatusCode *status)=0; + virtual uint32_t getHandle()=0; +}; + +} + +#endif // __tSystemInterface_h__ + diff --git a/hal/lib/Athena/ChipObject/tWatchdog.h b/hal/lib/Athena/ChipObject/tWatchdog.h new file mode 100644 index 0000000000..a589eda553 --- /dev/null +++ b/hal/lib/Athena/ChipObject/tWatchdog.h @@ -0,0 +1,108 @@ +// Copyright (c) National Instruments 2008. All Rights Reserved. +// Do Not Edit... this file is generated! + +#ifndef __nFRC_2012_1_6_4_Watchdog_h__ +#define __nFRC_2012_1_6_4_Watchdog_h__ + +#include "tSystemInterface.h" + +namespace nFPGA +{ +namespace nFRC_2012_1_6_4 +{ + +class tWatchdog +{ +public: + tWatchdog(){} + virtual ~tWatchdog(){} + + virtual tSystemInterface* getSystemInterface() = 0; + static tWatchdog* create(tRioStatusCode *status); + + typedef enum + { + kNumSystems = 1, + } tIfaceConstants; + + typedef + union{ + struct{ +#ifdef __vxworks + unsigned SystemActive : 1; + unsigned Alive : 1; + unsigned SysDisableCount : 15; + unsigned DisableCount : 15; +#else + unsigned DisableCount : 15; + unsigned SysDisableCount : 15; + unsigned Alive : 1; + unsigned SystemActive : 1; +#endif + }; + struct{ + unsigned value : 32; + }; + } tStatus; + + + + typedef enum + { + } tStatus_IfaceConstants; + + virtual tStatus readStatus(tRioStatusCode *status) = 0; + virtual bool readStatus_SystemActive(tRioStatusCode *status) = 0; + virtual bool readStatus_Alive(tRioStatusCode *status) = 0; + virtual unsigned short readStatus_SysDisableCount(tRioStatusCode *status) = 0; + virtual unsigned short readStatus_DisableCount(tRioStatusCode *status) = 0; + + + typedef enum + { + } tKill_IfaceConstants; + + virtual void strobeKill(tRioStatusCode *status) = 0; + + + typedef enum + { + } tFeed_IfaceConstants; + + virtual void strobeFeed(tRioStatusCode *status) = 0; + + + typedef enum + { + } tTimer_IfaceConstants; + + virtual unsigned int readTimer(tRioStatusCode *status) = 0; + + + typedef enum + { + } tExpiration_IfaceConstants; + + virtual void writeExpiration(unsigned int value, tRioStatusCode *status) = 0; + virtual unsigned int readExpiration(tRioStatusCode *status) = 0; + + + typedef enum + { + } tImmortal_IfaceConstants; + + virtual void writeImmortal(bool value, tRioStatusCode *status) = 0; + virtual bool readImmortal(tRioStatusCode *status) = 0; + + + + +private: + tWatchdog(const tWatchdog&); + void operator=(const tWatchdog&); +}; + +} +} + +#endif // __nFRC_2012_1_6_4_Watchdog_h__ diff --git a/hal/lib/Athena/NetworkCommunication/AICalibration.h b/hal/lib/Athena/NetworkCommunication/AICalibration.h index 39755bda89..b2f366c5bd 100644 --- a/hal/lib/Athena/NetworkCommunication/AICalibration.h +++ b/hal/lib/Athena/NetworkCommunication/AICalibration.h @@ -1,19 +1,19 @@ - -#ifndef __AICalibration_h__ -#define __AICalibration_h__ - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - - uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); - int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); - -#ifdef __cplusplus -} -#endif - -#endif // __AICalibration_h__ + +#ifndef __AICalibration_h__ +#define __AICalibration_h__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); + int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); + +#ifdef __cplusplus +} +#endif + +#endif // __AICalibration_h__ diff --git a/hal/lib/Athena/NetworkCommunication/CANInterfacePlugin.h b/hal/lib/Athena/NetworkCommunication/CANInterfacePlugin.h index a637eb1d9b..a973c31d2a 100644 --- a/hal/lib/Athena/NetworkCommunication/CANInterfacePlugin.h +++ b/hal/lib/Athena/NetworkCommunication/CANInterfacePlugin.h @@ -1,61 +1,61 @@ -// CANInterfacePlugin.h -// -// Defines the API for building a CAN Interface Plugin to support -// PWM-cable-free CAN motor control on FRC robots. This allows you -// to connect any CAN interface to the secure Jaguar CAN driver. -// - -#ifndef __CANInterfacePlugin_h__ -#define __CANInterfacePlugin_h__ - -#include - -#define CAN_IS_FRAME_REMOTE 0x80000000 -#define CAN_MESSAGE_ID_MASK 0x1FFFFFFF - -class CANInterfacePlugin -{ -public: - CANInterfacePlugin() {} - virtual ~CANInterfacePlugin() {} - - /** - * This entry-point of the CANInterfacePlugin is passed a message that the driver needs to send to - * a device on the CAN bus. - * - * This function may be called from multiple contexts and must therefore be reentrant. - * - * @param messageID The 29-bit CAN message ID in the lsbs. The msb can indicate a remote frame. - * @param data A pointer to a buffer containing between 0 and 8 bytes to send with the message. May be NULL if dataSize is 0. - * @param dataSize The number of bytes to send with the message. - * @return Return any error code. On success return 0. - */ - virtual int32_t sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize) = 0; - - /** - * This entry-point of the CANInterfacePlugin is passed buffers which should be populated with - * any received messages from devices on the CAN bus. - * - * This function is always called by a single task in the Jaguar driver, so it need not be reentrant. - * - * This function is expected to block for some period of time waiting for a message from the CAN bus. - * It may timeout periodically (returning non-zero to indicate no message was populated) to allow for - * shutdown and unloading of the plugin. - * - * @param messageID A reference to be populated with a received 29-bit CAN message ID in the lsbs. - * @param data A pointer to a buffer of 8 bytes to be populated with data received with the message. - * @param dataSize A reference to be populated with the size of the data received (0 - 8 bytes). - * @return This should return 0 if a message was populated, non-0 if no message was not populated. - */ - virtual int32_t receiveMessage(uint32_t &messageID, uint8_t *data, uint8_t &dataSize) = 0; -}; - -/** - * This function allows you to register a CANInterfacePlugin to provide access a CAN bus. - * - * @param interface A pointer to an object that inherits from CANInterfacePlugin and implements - * the pure virtual interface. If NULL, unregister the current plugin. - */ -void FRC_NetworkCommunication_JaguarCANDriver_registerInterface(CANInterfacePlugin* interface); - -#endif // __CANInterfacePlugin_h__ +// CANInterfacePlugin.h +// +// Defines the API for building a CAN Interface Plugin to support +// PWM-cable-free CAN motor control on FRC robots. This allows you +// to connect any CAN interface to the secure Jaguar CAN driver. +// + +#ifndef __CANInterfacePlugin_h__ +#define __CANInterfacePlugin_h__ + +#include + +#define CAN_IS_FRAME_REMOTE 0x80000000 +#define CAN_MESSAGE_ID_MASK 0x1FFFFFFF + +class CANInterfacePlugin +{ +public: + CANInterfacePlugin() {} + virtual ~CANInterfacePlugin() {} + + /** + * This entry-point of the CANInterfacePlugin is passed a message that the driver needs to send to + * a device on the CAN bus. + * + * This function may be called from multiple contexts and must therefore be reentrant. + * + * @param messageID The 29-bit CAN message ID in the lsbs. The msb can indicate a remote frame. + * @param data A pointer to a buffer containing between 0 and 8 bytes to send with the message. May be NULL if dataSize is 0. + * @param dataSize The number of bytes to send with the message. + * @return Return any error code. On success return 0. + */ + virtual int32_t sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize) = 0; + + /** + * This entry-point of the CANInterfacePlugin is passed buffers which should be populated with + * any received messages from devices on the CAN bus. + * + * This function is always called by a single task in the Jaguar driver, so it need not be reentrant. + * + * This function is expected to block for some period of time waiting for a message from the CAN bus. + * It may timeout periodically (returning non-zero to indicate no message was populated) to allow for + * shutdown and unloading of the plugin. + * + * @param messageID A reference to be populated with a received 29-bit CAN message ID in the lsbs. + * @param data A pointer to a buffer of 8 bytes to be populated with data received with the message. + * @param dataSize A reference to be populated with the size of the data received (0 - 8 bytes). + * @return This should return 0 if a message was populated, non-0 if no message was not populated. + */ + virtual int32_t receiveMessage(uint32_t &messageID, uint8_t *data, uint8_t &dataSize) = 0; +}; + +/** + * This function allows you to register a CANInterfacePlugin to provide access a CAN bus. + * + * @param interface A pointer to an object that inherits from CANInterfacePlugin and implements + * the pure virtual interface. If NULL, unregister the current plugin. + */ +void FRC_NetworkCommunication_JaguarCANDriver_registerInterface(CANInterfacePlugin* interface); + +#endif // __CANInterfacePlugin_h__ diff --git a/hal/lib/Athena/NetworkCommunication/FRCComm.h b/hal/lib/Athena/NetworkCommunication/FRCComm.h index ae248900ee..4d40d237d4 100644 --- a/hal/lib/Athena/NetworkCommunication/FRCComm.h +++ b/hal/lib/Athena/NetworkCommunication/FRCComm.h @@ -1,201 +1,201 @@ -/************************************************************* - * NOTICE - * - * These are the only externally exposed functions to the - * NetworkCommunication library - * - * This is an implementation of FRC Spec for Comm Protocol - * Revision 4.5, June 30, 2008 - * - * Copyright (c) National Instruments 2008. All Rights Reserved. - * - *************************************************************/ - -#ifndef __FRC_COMM_H__ -#define __FRC_COMM_H__ - -#ifdef SIMULATION -#include -#ifdef USE_THRIFT -#define EXPORT_FUNC -#else -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#endif -#else -#if defined(__vxworks) -#include -#define EXPORT_FUNC -#else -#include -#include -#define EXPORT_FUNC -#endif -#endif - -// Commandeer some bytes at the end for advanced I/O feedback. -#define IO_CONFIG_DATA_SIZE 32 -#define SYS_STATUS_DATA_SIZE 44 -#define USER_STATUS_DATA_SIZE (984 - IO_CONFIG_DATA_SIZE - SYS_STATUS_DATA_SIZE) -#define USER_DS_LCD_DATA_SIZE 128 - -struct FRCCommonControlData{ - uint16_t packetIndex; - union { - uint8_t control; -#ifndef __vxworks - struct { - uint8_t checkVersions :1; - uint8_t test :1; - uint8_t resync : 1; - uint8_t fmsAttached:1; - uint8_t autonomous : 1; - uint8_t enabled : 1; - uint8_t notEStop : 1; - uint8_t reset : 1; - }; -#else - struct { - uint8_t reset : 1; - uint8_t notEStop : 1; - uint8_t enabled : 1; - uint8_t autonomous : 1; - uint8_t fmsAttached:1; - uint8_t resync : 1; - uint8_t test :1; - uint8_t checkVersions :1; - }; -#endif - }; - uint8_t dsDigitalIn; - uint16_t teamID; - - char dsID_Alliance; - char dsID_Position; - - union { - int8_t stick0Axes[6]; - struct { - int8_t stick0Axis1; - int8_t stick0Axis2; - int8_t stick0Axis3; - int8_t stick0Axis4; - int8_t stick0Axis5; - int8_t stick0Axis6; - }; - }; - uint16_t stick0Buttons; // Left-most 4 bits are unused - - union { - int8_t stick1Axes[6]; - struct { - int8_t stick1Axis1; - int8_t stick1Axis2; - int8_t stick1Axis3; - int8_t stick1Axis4; - int8_t stick1Axis5; - int8_t stick1Axis6; - }; - }; - uint16_t stick1Buttons; // Left-most 4 bits are unused - - union { - int8_t stick2Axes[6]; - struct { - int8_t stick2Axis1; - int8_t stick2Axis2; - int8_t stick2Axis3; - int8_t stick2Axis4; - int8_t stick2Axis5; - int8_t stick2Axis6; - }; - }; - uint16_t stick2Buttons; // Left-most 4 bits are unused - - union { - int8_t stick3Axes[6]; - struct { - int8_t stick3Axis1; - int8_t stick3Axis2; - int8_t stick3Axis3; - int8_t stick3Axis4; - int8_t stick3Axis5; - int8_t stick3Axis6; - }; - }; - uint16_t stick3Buttons; // Left-most 4 bits are unused - - //Analog inputs are 10 bit right-justified - uint16_t analog1; - uint16_t analog2; - uint16_t analog3; - uint16_t analog4; - - uint64_t cRIOChecksum; - uint32_t FPGAChecksum0; - uint32_t FPGAChecksum1; - uint32_t FPGAChecksum2; - uint32_t FPGAChecksum3; - - char versionData[8]; -}; - -#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input 17 -#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output 18 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Header 19 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra1 20 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 21 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra2 22 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 23 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Joystick 24 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Custom 25 - -#ifdef __cplusplus -extern "C" { -#endif -#ifndef SIMULATION - void EXPORT_FUNC getFPGAHardwareVersion(uint16_t *fpgaVersion, uint32_t *fpgaRevision); -#endif - int EXPORT_FUNC getCommonControlData(struct FRCCommonControlData *data, int wait_ms); - int EXPORT_FUNC getRecentCommonControlData(struct FRCCommonControlData *commonData, int wait_ms); - int EXPORT_FUNC getRecentStatusData(uint8_t *batteryInt, uint8_t *batteryDec, uint8_t *dsDigitalOut, int wait_ms); - int EXPORT_FUNC getDynamicControlData(uint8_t type, char *dynamicData, int32_t maxLength, int wait_ms); - int EXPORT_FUNC setStatusData(float battery, uint8_t dsDigitalOut, uint8_t updateNumber, - const char *userDataHigh, int userDataHighLength, - const char *userDataLow, int userDataLowLength, int wait_ms); - int EXPORT_FUNC setStatusDataFloatAsInt(int battery, uint8_t dsDigitalOut, uint8_t updateNumber, - const char *userDataHigh, int userDataHighLength, - const char *userDataLow, int userDataLowLength, int wait_ms); - int EXPORT_FUNC setErrorData(const char *errors, int errorsLength, int wait_ms); - int EXPORT_FUNC setUserDsLcdData(const char *userDsLcdData, int userDsLcdDataLength, int wait_ms); - int EXPORT_FUNC overrideIOConfig(const char *ioConfig, int wait_ms); - -#ifdef SIMULATION - void EXPORT_FUNC setNewDataSem(HANDLE); -#else -# if defined (__vxworks) - void EXPORT_FUNC setNewDataSem(SEM_ID); - void EXPORT_FUNC setResyncSem(SEM_ID); -# else - void EXPORT_FUNC setNewDataSem(pthread_mutex_t *); - void EXPORT_FUNC setResyncSem(pthread_mutex_t *); -# endif - void EXPORT_FUNC signalResyncActionDone(void); -#endif - - // this uint32_t is really a LVRefNum - void EXPORT_FUNC setNewDataOccurRef(uint32_t refnum); -#ifndef SIMULATION - void EXPORT_FUNC setResyncOccurRef(uint32_t refnum); -#endif - - void EXPORT_FUNC FRC_NetworkCommunication_getVersionString(char *version); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramStarting(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramDisabled(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramAutonomous(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTeleop(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTest(void); -#ifdef __cplusplus -} -#endif - -#endif +/************************************************************* + * NOTICE + * + * These are the only externally exposed functions to the + * NetworkCommunication library + * + * This is an implementation of FRC Spec for Comm Protocol + * Revision 4.5, June 30, 2008 + * + * Copyright (c) National Instruments 2008. All Rights Reserved. + * + *************************************************************/ + +#ifndef __FRC_COMM_H__ +#define __FRC_COMM_H__ + +#ifdef SIMULATION +#include +#ifdef USE_THRIFT +#define EXPORT_FUNC +#else +#define EXPORT_FUNC __declspec(dllexport) __cdecl +#endif +#else +#if defined(__vxworks) +#include +#define EXPORT_FUNC +#else +#include +#include +#define EXPORT_FUNC +#endif +#endif + +// Commandeer some bytes at the end for advanced I/O feedback. +#define IO_CONFIG_DATA_SIZE 32 +#define SYS_STATUS_DATA_SIZE 44 +#define USER_STATUS_DATA_SIZE (984 - IO_CONFIG_DATA_SIZE - SYS_STATUS_DATA_SIZE) +#define USER_DS_LCD_DATA_SIZE 128 + +struct FRCCommonControlData{ + uint16_t packetIndex; + union { + uint8_t control; +#ifndef __vxworks + struct { + uint8_t checkVersions :1; + uint8_t test :1; + uint8_t resync : 1; + uint8_t fmsAttached:1; + uint8_t autonomous : 1; + uint8_t enabled : 1; + uint8_t notEStop : 1; + uint8_t reset : 1; + }; +#else + struct { + uint8_t reset : 1; + uint8_t notEStop : 1; + uint8_t enabled : 1; + uint8_t autonomous : 1; + uint8_t fmsAttached:1; + uint8_t resync : 1; + uint8_t test :1; + uint8_t checkVersions :1; + }; +#endif + }; + uint8_t dsDigitalIn; + uint16_t teamID; + + char dsID_Alliance; + char dsID_Position; + + union { + int8_t stick0Axes[6]; + struct { + int8_t stick0Axis1; + int8_t stick0Axis2; + int8_t stick0Axis3; + int8_t stick0Axis4; + int8_t stick0Axis5; + int8_t stick0Axis6; + }; + }; + uint16_t stick0Buttons; // Left-most 4 bits are unused + + union { + int8_t stick1Axes[6]; + struct { + int8_t stick1Axis1; + int8_t stick1Axis2; + int8_t stick1Axis3; + int8_t stick1Axis4; + int8_t stick1Axis5; + int8_t stick1Axis6; + }; + }; + uint16_t stick1Buttons; // Left-most 4 bits are unused + + union { + int8_t stick2Axes[6]; + struct { + int8_t stick2Axis1; + int8_t stick2Axis2; + int8_t stick2Axis3; + int8_t stick2Axis4; + int8_t stick2Axis5; + int8_t stick2Axis6; + }; + }; + uint16_t stick2Buttons; // Left-most 4 bits are unused + + union { + int8_t stick3Axes[6]; + struct { + int8_t stick3Axis1; + int8_t stick3Axis2; + int8_t stick3Axis3; + int8_t stick3Axis4; + int8_t stick3Axis5; + int8_t stick3Axis6; + }; + }; + uint16_t stick3Buttons; // Left-most 4 bits are unused + + //Analog inputs are 10 bit right-justified + uint16_t analog1; + uint16_t analog2; + uint16_t analog3; + uint16_t analog4; + + uint64_t cRIOChecksum; + uint32_t FPGAChecksum0; + uint32_t FPGAChecksum1; + uint32_t FPGAChecksum2; + uint32_t FPGAChecksum3; + + char versionData[8]; +}; + +#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input 17 +#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output 18 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Header 19 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra1 20 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 21 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra2 22 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 23 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Joystick 24 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Custom 25 + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef SIMULATION + void EXPORT_FUNC getFPGAHardwareVersion(uint16_t *fpgaVersion, uint32_t *fpgaRevision); +#endif + int EXPORT_FUNC getCommonControlData(struct FRCCommonControlData *data, int wait_ms); + int EXPORT_FUNC getRecentCommonControlData(struct FRCCommonControlData *commonData, int wait_ms); + int EXPORT_FUNC getRecentStatusData(uint8_t *batteryInt, uint8_t *batteryDec, uint8_t *dsDigitalOut, int wait_ms); + int EXPORT_FUNC getDynamicControlData(uint8_t type, char *dynamicData, int32_t maxLength, int wait_ms); + int EXPORT_FUNC setStatusData(float battery, uint8_t dsDigitalOut, uint8_t updateNumber, + const char *userDataHigh, int userDataHighLength, + const char *userDataLow, int userDataLowLength, int wait_ms); + int EXPORT_FUNC setStatusDataFloatAsInt(int battery, uint8_t dsDigitalOut, uint8_t updateNumber, + const char *userDataHigh, int userDataHighLength, + const char *userDataLow, int userDataLowLength, int wait_ms); + int EXPORT_FUNC setErrorData(const char *errors, int errorsLength, int wait_ms); + int EXPORT_FUNC setUserDsLcdData(const char *userDsLcdData, int userDsLcdDataLength, int wait_ms); + int EXPORT_FUNC overrideIOConfig(const char *ioConfig, int wait_ms); + +#ifdef SIMULATION + void EXPORT_FUNC setNewDataSem(HANDLE); +#else +# if defined (__vxworks) + void EXPORT_FUNC setNewDataSem(SEM_ID); + void EXPORT_FUNC setResyncSem(SEM_ID); +# else + void EXPORT_FUNC setNewDataSem(pthread_mutex_t *); + void EXPORT_FUNC setResyncSem(pthread_mutex_t *); +# endif + void EXPORT_FUNC signalResyncActionDone(void); +#endif + + // this uint32_t is really a LVRefNum + void EXPORT_FUNC setNewDataOccurRef(uint32_t refnum); +#ifndef SIMULATION + void EXPORT_FUNC setResyncOccurRef(uint32_t refnum); +#endif + + void EXPORT_FUNC FRC_NetworkCommunication_getVersionString(char *version); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramStarting(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramDisabled(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramAutonomous(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTeleop(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTest(void); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hal/lib/Athena/NetworkCommunication/JaguarCANDriver.h b/hal/lib/Athena/NetworkCommunication/JaguarCANDriver.h index 67797e6063..c7ded49749 100644 --- a/hal/lib/Athena/NetworkCommunication/JaguarCANDriver.h +++ b/hal/lib/Athena/NetworkCommunication/JaguarCANDriver.h @@ -1,56 +1,56 @@ -// JaguarCANDriver.h -// -// Defines the API for building a CAN Interface Plugin to support -// PWM-cable-free CAN motor control on FRC robots. This allows you -// to connect any CAN interface to the secure Jaguar CAN driver. -// - -#ifndef __JaguarCANDriver_h__ -#define __JaguarCANDriver_h__ - -#if defined(__vxworks) -#include -#else -#include -#include -#endif -#ifdef USE_THRIFT -#include "NetCommRPCComm.h" -#include -#endif -namespace nJaguarCANDriver -{ - void sendMessage_wrapper(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); - void receiveMessage_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); - int32_t receiveMessageStart_wrapper(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); -#if defined (__vxworks) - int32_t receiveMessageStart_sem_wrapper(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); -#else - int32_t receiveMessageStart_mutex_wrapper(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); -#endif - void receiveMessageComplete_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); -#ifdef USE_THRIFT - void checkEvent_CAN(std::vector< CANEvent >& events); -#endif -} - -#ifdef __cplusplus -extern "C" -{ -#endif - - void FRC_NetworkCommunication_JaguarCANDriver_sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); - void FRC_NetworkCommunication_JaguarCANDriver_receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); - int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); -#if defined (__vxworks) - int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_sem(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); -#else - int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_mutex(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); -#endif - void FRC_NetworkCommunication_JaguarCANDriver_receiveMessageComplete(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); - -#ifdef __cplusplus -} -#endif - -#endif // __JaguarCANDriver_h__ +// JaguarCANDriver.h +// +// Defines the API for building a CAN Interface Plugin to support +// PWM-cable-free CAN motor control on FRC robots. This allows you +// to connect any CAN interface to the secure Jaguar CAN driver. +// + +#ifndef __JaguarCANDriver_h__ +#define __JaguarCANDriver_h__ + +#if defined(__vxworks) +#include +#else +#include +#include +#endif +#ifdef USE_THRIFT +#include "NetCommRPCComm.h" +#include +#endif +namespace nJaguarCANDriver +{ + void sendMessage_wrapper(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); + void receiveMessage_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); + int32_t receiveMessageStart_wrapper(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); +#if defined (__vxworks) + int32_t receiveMessageStart_sem_wrapper(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); +#else + int32_t receiveMessageStart_mutex_wrapper(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); +#endif + void receiveMessageComplete_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); +#ifdef USE_THRIFT + void checkEvent_CAN(std::vector< CANEvent >& events); +#endif +} + +#ifdef __cplusplus +extern "C" +{ +#endif + + void FRC_NetworkCommunication_JaguarCANDriver_sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); + void FRC_NetworkCommunication_JaguarCANDriver_receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); +#if defined (__vxworks) + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_sem(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); +#else + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_mutex(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); +#endif + void FRC_NetworkCommunication_JaguarCANDriver_receiveMessageComplete(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); + +#ifdef __cplusplus +} +#endif + +#endif // __JaguarCANDriver_h__ diff --git a/hal/lib/Athena/NetworkCommunication/LoadOut.h b/hal/lib/Athena/NetworkCommunication/LoadOut.h index 0304b30665..2433b0cc71 100644 --- a/hal/lib/Athena/NetworkCommunication/LoadOut.h +++ b/hal/lib/Athena/NetworkCommunication/LoadOut.h @@ -1,52 +1,52 @@ - -#ifndef __LoadOut_h__ -#define __LoadOut_h__ - -#ifdef SIMULATION -#include -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#elif defined (__vxworks) -#include -#define EXPORT_FUNC -#else -#include -#define EXPORT_FUNC -#endif - -#define kMaxModuleNumber 2 -namespace nLoadOut -{ - typedef enum { - kModuleType_Unknown = 0x00, - kModuleType_Analog = 0x01, - kModuleType_Digital = 0x02, - kModuleType_Solenoid = 0x03, - } tModuleType; - bool EXPORT_FUNC getModulePresence(tModuleType moduleType, uint8_t moduleNumber); - typedef enum { - kTargetClass_Unknown = 0x00, - kTargetClass_FRC1 = 0x10, - kTargetClass_FRC2 = 0x20, - kTargetClass_FRC3 = 0x30, - kTargetClass_RoboRIO = 0x40, - kTargetClass_FRC2_Analog = kTargetClass_FRC2 | kModuleType_Analog, - kTargetClass_FRC2_Digital = kTargetClass_FRC2 | kModuleType_Digital, - kTargetClass_FRC2_Solenoid = kTargetClass_FRC2 | kModuleType_Solenoid, - kTargetClass_FamilyMask = 0xF0, - kTargetClass_ModuleMask = 0x0F, - } tTargetClass; - tTargetClass EXPORT_FUNC getTargetClass(); -} - -#ifdef __cplusplus -extern "C" { -#endif - - uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t moduleType, uint8_t moduleNumber); - uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getTargetClass(); - -#ifdef __cplusplus -} -#endif - -#endif // __LoadOut_h__ + +#ifndef __LoadOut_h__ +#define __LoadOut_h__ + +#ifdef SIMULATION +#include +#define EXPORT_FUNC __declspec(dllexport) __cdecl +#elif defined (__vxworks) +#include +#define EXPORT_FUNC +#else +#include +#define EXPORT_FUNC +#endif + +#define kMaxModuleNumber 2 +namespace nLoadOut +{ + typedef enum { + kModuleType_Unknown = 0x00, + kModuleType_Analog = 0x01, + kModuleType_Digital = 0x02, + kModuleType_Solenoid = 0x03, + } tModuleType; + bool EXPORT_FUNC getModulePresence(tModuleType moduleType, uint8_t moduleNumber); + typedef enum { + kTargetClass_Unknown = 0x00, + kTargetClass_FRC1 = 0x10, + kTargetClass_FRC2 = 0x20, + kTargetClass_FRC3 = 0x30, + kTargetClass_RoboRIO = 0x40, + kTargetClass_FRC2_Analog = kTargetClass_FRC2 | kModuleType_Analog, + kTargetClass_FRC2_Digital = kTargetClass_FRC2 | kModuleType_Digital, + kTargetClass_FRC2_Solenoid = kTargetClass_FRC2 | kModuleType_Solenoid, + kTargetClass_FamilyMask = 0xF0, + kTargetClass_ModuleMask = 0x0F, + } tTargetClass; + tTargetClass EXPORT_FUNC getTargetClass(); +} + +#ifdef __cplusplus +extern "C" { +#endif + + uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t moduleType, uint8_t moduleNumber); + uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getTargetClass(); + +#ifdef __cplusplus +} +#endif + +#endif // __LoadOut_h__ diff --git a/hal/lib/Athena/NetworkCommunication/UsageReporting.h b/hal/lib/Athena/NetworkCommunication/UsageReporting.h index 2c7499ea61..918ac5ae63 100644 --- a/hal/lib/Athena/NetworkCommunication/UsageReporting.h +++ b/hal/lib/Athena/NetworkCommunication/UsageReporting.h @@ -1,139 +1,139 @@ - -#ifndef __UsageReporting_h__ -#define __UsageReporting_h__ - -#ifdef SIMULATION -#include -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#elif defined (__vxworks) -#include -#define EXPORT_FUNC -#else -#include -#include -#define EXPORT_FUNC -#endif - -#define kUsageReporting_version 1 - -namespace nUsageReporting -{ - typedef enum - { - kResourceType_Controller, - kResourceType_Module, - kResourceType_Language, - kResourceType_CANPlugin, - kResourceType_Accelerometer, - kResourceType_ADXL345, - kResourceType_AnalogChannel, - kResourceType_AnalogTrigger, - kResourceType_AnalogTriggerOutput, - kResourceType_CANJaguar, - kResourceType_Compressor, - kResourceType_Counter, - kResourceType_Dashboard, - kResourceType_DigitalInput, - kResourceType_DigitalOutput, - kResourceType_DriverStationCIO, - kResourceType_DriverStationEIO, - kResourceType_DriverStationLCD, - kResourceType_Encoder, - kResourceType_GearTooth, - kResourceType_Gyro, - kResourceType_I2C, - kResourceType_Framework, - kResourceType_Jaguar, - kResourceType_Joystick, - kResourceType_Kinect, - kResourceType_KinectStick, - kResourceType_PIDController, - kResourceType_Preferences, - kResourceType_PWM, - kResourceType_Relay, - kResourceType_RobotDrive, - kResourceType_SerialPort, - kResourceType_Servo, - kResourceType_Solenoid, - kResourceType_SPI, - kResourceType_Task, - kResourceType_Ultrasonic, - kResourceType_Victor, - kResourceType_Button, - kResourceType_Command, - kResourceType_AxisCamera, - kResourceType_PCVideoServer, - kResourceType_SmartDashboard, - kResourceType_Talon, - kResourceType_HiTechnicColorSensor, - kResourceType_HiTechnicAccel, - kResourceType_HiTechnicCompass, - kResourceType_SRF08, - } tResourceType; - - typedef enum - { - kLanguage_LabVIEW = 1, - kLanguage_CPlusPlus = 2, - kLanguage_Java = 3, - kLanguage_Python = 4, - - kCANPlugin_BlackJagBridge = 1, - kCANPlugin_2CAN = 2, - - kFramework_Iterative = 1, - kFramework_Simple = 2, - - kRobotDrive_ArcadeStandard = 1, - kRobotDrive_ArcadeButtonSpin = 2, - kRobotDrive_ArcadeRatioCurve = 3, - kRobotDrive_Tank = 4, - kRobotDrive_MecanumPolar = 5, - kRobotDrive_MecanumCartesian = 6, - - kDriverStationCIO_Analog = 1, - kDriverStationCIO_DigitalIn = 2, - kDriverStationCIO_DigitalOut = 3, - - kDriverStationEIO_Acceleration = 1, - kDriverStationEIO_AnalogIn = 2, - kDriverStationEIO_AnalogOut = 3, - kDriverStationEIO_Button = 4, - kDriverStationEIO_LED = 5, - kDriverStationEIO_DigitalIn = 6, - kDriverStationEIO_DigitalOut = 7, - kDriverStationEIO_FixedDigitalOut = 8, - kDriverStationEIO_PWM = 9, - kDriverStationEIO_Encoder = 10, - kDriverStationEIO_TouchSlider = 11, - - kADXL345_SPI = 1, - kADXL345_I2C = 2, - - kCommand_Scheduler = 1, - - kSmartDashboard_Instance = 1, - } tInstances; - - /** - * Report the usage of a resource of interest. - * - * @param resource one of the values in the tResourceType above (max value 51). - * @param instanceNumber an index that identifies the resource instance. - * @param context an optional additional context number for some cases (such as module number). Set to 0 to omit. - * @param feature a string to be included describing features in use on a specific resource. Setting the same resource more than once allows you to change the feature string. - */ - uint32_t EXPORT_FUNC report(tResourceType resource, uint8_t instanceNumber, uint8_t context = 0, const char *feature = NULL); -} - -#ifdef __cplusplus -extern "C" { -#endif - - uint32_t EXPORT_FUNC FRC_NetworkCommunication_nUsageReporting_report(uint8_t resource, uint8_t instanceNumber, uint8_t context, const char *feature); - -#ifdef __cplusplus -} -#endif - -#endif // __UsageReporting_h__ + +#ifndef __UsageReporting_h__ +#define __UsageReporting_h__ + +#ifdef SIMULATION +#include +#define EXPORT_FUNC __declspec(dllexport) __cdecl +#elif defined (__vxworks) +#include +#define EXPORT_FUNC +#else +#include +#include +#define EXPORT_FUNC +#endif + +#define kUsageReporting_version 1 + +namespace nUsageReporting +{ + typedef enum + { + kResourceType_Controller, + kResourceType_Module, + kResourceType_Language, + kResourceType_CANPlugin, + kResourceType_Accelerometer, + kResourceType_ADXL345, + kResourceType_AnalogChannel, + kResourceType_AnalogTrigger, + kResourceType_AnalogTriggerOutput, + kResourceType_CANJaguar, + kResourceType_Compressor, + kResourceType_Counter, + kResourceType_Dashboard, + kResourceType_DigitalInput, + kResourceType_DigitalOutput, + kResourceType_DriverStationCIO, + kResourceType_DriverStationEIO, + kResourceType_DriverStationLCD, + kResourceType_Encoder, + kResourceType_GearTooth, + kResourceType_Gyro, + kResourceType_I2C, + kResourceType_Framework, + kResourceType_Jaguar, + kResourceType_Joystick, + kResourceType_Kinect, + kResourceType_KinectStick, + kResourceType_PIDController, + kResourceType_Preferences, + kResourceType_PWM, + kResourceType_Relay, + kResourceType_RobotDrive, + kResourceType_SerialPort, + kResourceType_Servo, + kResourceType_Solenoid, + kResourceType_SPI, + kResourceType_Task, + kResourceType_Ultrasonic, + kResourceType_Victor, + kResourceType_Button, + kResourceType_Command, + kResourceType_AxisCamera, + kResourceType_PCVideoServer, + kResourceType_SmartDashboard, + kResourceType_Talon, + kResourceType_HiTechnicColorSensor, + kResourceType_HiTechnicAccel, + kResourceType_HiTechnicCompass, + kResourceType_SRF08, + } tResourceType; + + typedef enum + { + kLanguage_LabVIEW = 1, + kLanguage_CPlusPlus = 2, + kLanguage_Java = 3, + kLanguage_Python = 4, + + kCANPlugin_BlackJagBridge = 1, + kCANPlugin_2CAN = 2, + + kFramework_Iterative = 1, + kFramework_Simple = 2, + + kRobotDrive_ArcadeStandard = 1, + kRobotDrive_ArcadeButtonSpin = 2, + kRobotDrive_ArcadeRatioCurve = 3, + kRobotDrive_Tank = 4, + kRobotDrive_MecanumPolar = 5, + kRobotDrive_MecanumCartesian = 6, + + kDriverStationCIO_Analog = 1, + kDriverStationCIO_DigitalIn = 2, + kDriverStationCIO_DigitalOut = 3, + + kDriverStationEIO_Acceleration = 1, + kDriverStationEIO_AnalogIn = 2, + kDriverStationEIO_AnalogOut = 3, + kDriverStationEIO_Button = 4, + kDriverStationEIO_LED = 5, + kDriverStationEIO_DigitalIn = 6, + kDriverStationEIO_DigitalOut = 7, + kDriverStationEIO_FixedDigitalOut = 8, + kDriverStationEIO_PWM = 9, + kDriverStationEIO_Encoder = 10, + kDriverStationEIO_TouchSlider = 11, + + kADXL345_SPI = 1, + kADXL345_I2C = 2, + + kCommand_Scheduler = 1, + + kSmartDashboard_Instance = 1, + } tInstances; + + /** + * Report the usage of a resource of interest. + * + * @param resource one of the values in the tResourceType above (max value 51). + * @param instanceNumber an index that identifies the resource instance. + * @param context an optional additional context number for some cases (such as module number). Set to 0 to omit. + * @param feature a string to be included describing features in use on a specific resource. Setting the same resource more than once allows you to change the feature string. + */ + uint32_t EXPORT_FUNC report(tResourceType resource, uint8_t instanceNumber, uint8_t context = 0, const char *feature = NULL); +} + +#ifdef __cplusplus +extern "C" { +#endif + + uint32_t EXPORT_FUNC FRC_NetworkCommunication_nUsageReporting_report(uint8_t resource, uint8_t instanceNumber, uint8_t context, const char *feature); + +#ifdef __cplusplus +} +#endif + +#endif // __UsageReporting_h__ diff --git a/hal/lib/Athena/i2clib/i2c-lib.h b/hal/lib/Athena/i2clib/i2c-lib.h index 9d095ec219..d379765e13 100644 --- a/hal/lib/Athena/i2clib/i2c-lib.h +++ b/hal/lib/Athena/i2clib/i2c-lib.h @@ -1,10 +1,10 @@ -#ifndef __I2C_LIB_H__ -#define __I2C_LIB_H__ - -int i2clib_open(const char *device); -void i2clib_close(int handle); -int i2clib_read(int handle, uint8_t dev_addr, char *recv_buf, int32_t recv_size); -int i2clib_write(int handle, uint8_t dev_addr, const char *send_buf, int32_t send_size); -int i2clib_writeread(int handle, uint8_t dev_addr, const char *send_buf, int32_t send_size, char *recv_buf, int32_t recv_size); - +#ifndef __I2C_LIB_H__ +#define __I2C_LIB_H__ + +int i2clib_open(const char *device); +void i2clib_close(int handle); +int i2clib_read(int handle, uint8_t dev_addr, char *recv_buf, int32_t recv_size); +int i2clib_write(int handle, uint8_t dev_addr, const char *send_buf, int32_t send_size); +int i2clib_writeread(int handle, uint8_t dev_addr, const char *send_buf, int32_t send_size, char *recv_buf, int32_t recv_size); + #endif /* __I2C_LIB_H__ */ \ No newline at end of file diff --git a/hal/lib/Athena/i2clib/i2clib/environs.h b/hal/lib/Athena/i2clib/i2clib/environs.h index 518a991713..d250585223 100644 --- a/hal/lib/Athena/i2clib/i2clib/environs.h +++ b/hal/lib/Athena/i2clib/i2clib/environs.h @@ -1,66 +1,66 @@ -/*! - \file environs.h - \brief Defines export symbols and namespace aliases -*/ -/* - Copyright (c) 2014, - National Instruments Corporation. - All rights reserved. - - File: $Id: //lvaddon/FIRST/FRC/trunk/2015/tools/frcrti/export/1.0/1.0.0a5/includes/wpilib/i2clib/i2clib/environs.h#1 $ - Author: nipg.pl - Originated: Mon Feb 10 10:39:42 2014 -*/ - -#ifndef ___i2clib_environs_h___ -#define ___i2clib_environs_h___ - -#include - -/* - * kI2CLIBExportSymbols directs the build to export symbols modified by - * the kI2CLIBExport keyword. kI2CLIBNoExportSymbols directs the build to not - * import or export symbols modified by the kI2CLIBExport keyword. If - * neither of these are defined, the symbols modified by kI2CLIBExport are - * imported. These should be defined only when building the component, - * so clients do not need to trouble themselves with it. - */ -#if defined(kI2CLIBExportSymbols) - #define kI2CLIBExport kNIExport - #define kI2CLIBExportPre kNIExportPre - #define kI2CLIBExportPost kNIExportPost - #define kI2CLIBExportInline kNIExportInline - #define kI2CLIBExportData kNIExportData -#elif defined(kI2CLIBNoExportSymbols) - #define kI2CLIBExport - #define kI2CLIBExportPre - #define kI2CLIBExportPost - #define kI2CLIBExportInline - #define kI2CLIBExportData -#else - #define kI2CLIBExport kNIImport - #define kI2CLIBExportPre kNIImportPre - #define kI2CLIBExportPost kNIImportPost - #define kI2CLIBExportInline kNIImportInline - #define kI2CLIBExportData kNIImportData -#endif - -// namespace declarations for aliasing ... - -#ifdef __cplusplus - - -/*! - \namespace nI2CLIB_1_0 - \brief i2c user-mode library Release 1.0 -*/ -namespace nI2CLIB_1_0 -{ - // current versioned namespace aliases used by this package - -} - -#endif // __cplusplus - -#endif // ___i2clib_environs_h___ - +/*! + \file environs.h + \brief Defines export symbols and namespace aliases +*/ +/* + Copyright (c) 2014, + National Instruments Corporation. + All rights reserved. + + File: $Id: //lvaddon/FIRST/FRC/trunk/2015/tools/frcrti/export/1.0/1.0.0a6/includes/wpilib/i2clib/i2clib/environs.h#1 $ + Author: nipg.pl + Originated: Mon Feb 10 10:39:42 2014 +*/ + +#ifndef ___i2clib_environs_h___ +#define ___i2clib_environs_h___ + +#include + +/* + * kI2CLIBExportSymbols directs the build to export symbols modified by + * the kI2CLIBExport keyword. kI2CLIBNoExportSymbols directs the build to not + * import or export symbols modified by the kI2CLIBExport keyword. If + * neither of these are defined, the symbols modified by kI2CLIBExport are + * imported. These should be defined only when building the component, + * so clients do not need to trouble themselves with it. + */ +#if defined(kI2CLIBExportSymbols) + #define kI2CLIBExport kNIExport + #define kI2CLIBExportPre kNIExportPre + #define kI2CLIBExportPost kNIExportPost + #define kI2CLIBExportInline kNIExportInline + #define kI2CLIBExportData kNIExportData +#elif defined(kI2CLIBNoExportSymbols) + #define kI2CLIBExport + #define kI2CLIBExportPre + #define kI2CLIBExportPost + #define kI2CLIBExportInline + #define kI2CLIBExportData +#else + #define kI2CLIBExport kNIImport + #define kI2CLIBExportPre kNIImportPre + #define kI2CLIBExportPost kNIImportPost + #define kI2CLIBExportInline kNIImportInline + #define kI2CLIBExportData kNIImportData +#endif + +// namespace declarations for aliasing ... + +#ifdef __cplusplus + + +/*! + \namespace nI2CLIB_1_0 + \brief i2c user-mode library Release 1.0 +*/ +namespace nI2CLIB_1_0 +{ + // current versioned namespace aliases used by this package + +} + +#endif // __cplusplus + +#endif // ___i2clib_environs_h___ + diff --git a/hal/lib/Athena/spilib/spi-lib.h b/hal/lib/Athena/spilib/spi-lib.h index 4b4389510e..57dc10f509 100644 --- a/hal/lib/Athena/spilib/spi-lib.h +++ b/hal/lib/Athena/spilib/spi-lib.h @@ -1,13 +1,13 @@ -#ifndef __SPI_LIB_H__ -#define __SPI_LIB_H__ - -int spilib_open(const char *device); -void spilib_close(int handle); -int spilib_setspeed(int handle, uint32_t speed); -int spilib_setbitsperword(int handle, uint8_t bpw); -int spilib_setopts(int handle, int msb_first, int sample_on_trailing, int clk_idle_high); -int spilib_read(int handle, char *recv_buf, int32_t size); -int spilib_write(int handle, const char *send_buf, int32_t size); -int spilib_writeread(int handle, const char *send_buf, char *recv_buf, int32_t size); - +#ifndef __SPI_LIB_H__ +#define __SPI_LIB_H__ + +int spilib_open(const char *device); +void spilib_close(int handle); +int spilib_setspeed(int handle, uint32_t speed); +int spilib_setbitsperword(int handle, uint8_t bpw); +int spilib_setopts(int handle, int msb_first, int sample_on_trailing, int clk_idle_high); +int spilib_read(int handle, char *recv_buf, int32_t size); +int spilib_write(int handle, const char *send_buf, int32_t size); +int spilib_writeread(int handle, const char *send_buf, char *recv_buf, int32_t size); + #endif /* __SPI_LIB_H__ */ \ No newline at end of file diff --git a/ni-libraries/libFRC_FPGA_ChipObject.so.1 b/ni-libraries/libFRC_FPGA_ChipObject.so.1 old mode 100644 new mode 100755 index fe5260f9e438377a8ae55b2738b9f5c67616da57..51f6d195aef8b5f8530a3f7993d8d2301bdbb519 GIT binary patch delta 60 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
+0o{1-m)#weY?{cTqeHx#yHE_ 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 delta 105682 zcma%^3tUuH_xH~}G6)F9RqhNRC>9DR=3TK+vCtsV^oa@$4T}m(iwYYoG%_vhpc@qx z3kwqqQv(YN%L)w(3kwSiP!a_b6%`BR{jE6*na8*P|9!{L_PZ}@-`8GypUVuzTl@}g z^2_lbRJXFXqAH3ZQt?*|N{HgAcql?q(#j|IR=S)`LYjP|^6(87CJ8C(!Pr!5jL z4;3LbM^9CrU{c0h_%q=8qNaHW2Z9U1G{pS}?hxElaP(OWJ`MK={0qPXa5Le;vcp3bX<%S?U2mUI!aU4gYZt#BtenJ6! z#=u>JTPKu(%Kh+s0)brcJ@5!;{0w0M{}yntsvWiMXZi}kS2=kPqBp|@q0Sm`GF%qY z^5BLe?pKyWwDKtZhtCzneF<74-3ZtHnS%J=5s2WpLWIwAey<)mlTwVxU7YJI{LtN- zpOf&lA+8TxI5O=3zl3`l@gCrIILnU>WI7RXC&v$E4h9Esr2_PUi~+n)^o9l@@QpUg z%G*@U;$JX3nUUaR_EU8g@T*+hUGT4g>&58}NdKIK@F_yvF}OP*n~v}qxTP%Tj<^#f zgik8s?uM$E1AUP2IwCZL?BIOhF9!X<5TyCT?T5enD6IZaN%&2BOSI*nbe=E%2|0vxA$7a1#mPQv#Q2_F?_9{8lDK zJHa2#>E-aJv45Drs1_h%BAhK;_vd5w`&e|U9dXAY5DdNp=gl&qoT&-n5cazw-%*6` zw8(Fb@NCXQVxjPN2+XQ2gnGjjATo*t8o_B6!cauz4~y^$3qO*SGKAj(gDHT|G`LE{ zEdl$2hd?jzD%?c)>Enqy9ZmResvcIBAn`QZE;#yp1lGbm&tZz&4ZpKRnBt-legq6f zS>2y)?CH;OrI2}<^DVT9t5a(u5;Jb+b331inZ?@Bx*?WuTXcsO9YQnC+Z8+t`XOuS0?ry|8ig8*%FBjW*Jz5zLsXLq=;7~VQ5Iaox z!p6HB`XTapga_I#<>W;aa(cO2m^lTp-T~_@V&As#uV=p}Nogg0?8Pi9ed3dd9}Kqv z?hQBz_aNL5IQp#8p^Rh_U}}^E4iBZ?Xlb`ub*r}Gg_P-V3s_<$li;siw>64=lxNZ% z7V+fGxFwuv5#9~Ivqjj*{t+}14sRl~7w$iB&D1OL9M$m9FodtbS$^CR=zu%Mkv2S; z-7=-{9N@sl?nq{!McAFrK3bc-)!@ev8wS@OCH=$_A274PZ`t1)>910|JaZ6pJIAUP z_3x*-aj4^z* z7vUcXI>LPn|5$;2Yz{mvaP!Tb#_><9?`stt!c`zaiG>U2ur)>SX8=uyDG#AXIrY8n zB=Bns|3~mgScKQY?_?1!v+$F5FQ zd%^C{TzH0a;0+qqac@C_K0oMClE6l|ClTMD<4WLP&2k*2Oh9-zm0;M4s7QJA>E13{ zg`<_}dnELObM2M{T@fAy_XAu#+}CjQF*0|;{|fxA9Darf+eV)UIW7YH9$_nUtp4BY z?B9m8KXp0N&E$Ic{)Br1?rtvRJNWy+(Wee^zi|9#%(-9y(#qk+z&{W!7!C0RZ@?{r z^G2F8H?9)?7ZCR&+-vYF3axZ}_90>rTn*fd2yfOGt`kN=GdLU7JsY$E&VCOTtg}|g zsst$Z$_Ha{HtOiD*qFo4irrAGhbukdmvN>@Z|@1u!w6SoS(~i@-jMicg&}U$0u5 zO*0h{<atTw5bG7GO{Njr)^kn{R2CmT1o9-%HpiY%PQ?#ulCgPWiU>97kk3bW9tjSs1D*% z=0QGPo8)Q~HrjkwqnfiyTj4syIc1Br*%(qoHjKbk&wA|}S3i-bHMxdGiqNIxfD9K{H z9>DzgYnR=OcZGNL6!GLhXzH4t{tv*pEb&Wg^X}<{iqc?KJ27fd7PA(4-hq?1rp@X% zL_}%J`x(ciY_e7mXHL9G_TQrMFF4?0ZJ9OF^z_qq@bHIJ=!br8f%XH!>No4$JT+3NZ_KO3cj~0_1h(<<3KS?b~{%*`< z^7@{^x`I6>_Z4g90ZuQ5Ze?w-HXk$0GY>5(xYW}hF-y@dc{oihu;^pXI1G5cwSub6 zbv%e>cfMw=V8LLguvfZZrE3mYn|CWJQ(`^aYm+>Ufz8~1T3^3mn!?et2rlI?)Tp*y zTjA;FRAkY?pM4;v?e#PYEA5zPnA*NYv-TSAR0D1GB=ckd0sM!MG8e3?QW7z(AWS+6bd z_L~@9V6F7ye%51b_n-&e?YM|`gj86YuMH{N2rR_voSuc3iA4~ieeG?GD8TYXcg>^s z7t}ZDdXIYhVrm?Z^o;K8NNir3n~yQx2YN~BNM%okX-u&&jpg^@IQ5ma`I?;4Ux6N^ zLJ!C^Q}{5>DB)Nnr0z6FjhMqMZMlz8cxc;v!qk#B?Ps4MB2hE=hDG>Wj72aM+-7r6 zCw{~%r&)~TKiKCJwfVkAwfeBO!gq+NysF2*#y}G?pb4|M6$=6}#}*5`1DfMwu_o-s zLz^vnH5-#3gAvDUnOi*xp0P0SAza>_cVTSMI6B-@FR!}erp;m)@$MZ%#VD`J?O9>Z z!aR?}^6wt}>#zfkNbg?mqoI_|7QK519Z1!d`x(V-ZJS@1+L@#M?C0l{h!u$mFxUCw z7!;`)jK)BF%xbqbe;o#ufeOJ^nWdI_!YH5DCL71A#cQ+`MnB=GZ8I93(=687I~bju zx3r&;7_MD58r6;tt)IW2a{`PV+G#Fl7}iqVYHhN=U&KgQjv$Wy_-+ggmP9CrJ22fg zY%|H&eB(~jz1BZW?a0->@%Iy%T9dy~#At?qFsE#+U8u6T{K@D|v^FUq?EY3*iF-M= z2<9YZxwSHb!@r{QRJTY$v&uHHS_&H@-7_0u!#!&5Y zKp0kRaG+6SXp;hsPN5iFEI@N}p24~e(Ut^GfST?NGzN}+v!~G8QAv!&8aH7#?R-nS z5;$Ir)rR*sI)^~Bx)q@SRW)DI7WAjFUEcpb%;&NGMiHl7?r$90VbP}37}63fT8y)~ z1$SX#6<}d?tFWIJ&O&Y4A(MiGHO~sNP+=G>psSOV{iUe(Da9Bh%CK(+xmvA2DDg>&A9l#u35sfBW zjBf&(Sg7p{Hr{2k!rFX9l+o1{->$DYv zrbpOY%>7!}fE0@Zt}k?<6DF#AzN27cJT$}YMx6PAZ=YcDzzAYU%vJn_9WWHV#*mo9 zXFXtFU^brQ@GBUFIEzu}gkf%mdSlg@<@3mr@W&ZE(W^T|dWn0zus<;tyZ%&P81lMR zJ?iX;TzQycI?>bMeSm4Ou^7DbP=V^^p7quOHT1xGL?6xab}&UzTJRk(FPH*vj-3j{ zaMfnsF=1XitQoY%EV~c`QHd$<9^b=Q2o)9!p&cVuW}%K<*roQMt=;l(;n<#o18BER zJ%jnETc=&QV@O1u#nE#NHOb;2kUbT96}D(B5c6ht5M!F6%?ve0WLPw239bS5SWNbZ zwEnPzb+v-lb);eTrmY;LeaCE>DO>1 zi{mvwW_1emwiec_dw=;BJybBd1X8QV;HiFFTQFougkqtNze6?JEKJ3VI5k&Tq>qP& zuXbXdsWj}fi5&@N}}wS^e?ZcYAd zDqR#U3A-;a#UfWEv}UA5_;<9h_Nw-0*pP^Ni|9{bb1E$=-vJZqiUS(}@P#Tow#9s-3H}=Y|e}A>KALOl@w~ejYkqt<2K~3>&X@uG1C_ z^HZD8Xe);KIn9PDbZ@AyV96wDdxshORAYHzt&U1b*C zE5r^t+hTh%V!_40!a>-aD;ee|&%y)`fR4AdzdLKVm5AK^z^LUaaAM4|cv#+E+M2iA z`q14uq4a{Y(&AUUXgRBAX?APuapRKyQK~s@cds{p6I%USw`=w}crK&ex7tlh&$$P_ z13BMnE7#mG(F1erElNG}6tkJx%4}n{Gdq}_OdBW-mE+3vXNEFIGUJ#DI`2_ZI3ksq z$;@JAGgmQln7Pa{X1QjoO&DYY`$EmIXF4)nnI23ZZJ{>MHikp7+Ioc2Ih3It(gvD} zI8@B6WL7cjnWvZ?%uc2w?5BA^m?6wiW)w4;8N-a#`5z^YBNCWt%*D)fW(G5pnZ?Xz zu43jebG7xkVJ643+&rcSGlUt+3};3$qnR(r*K_4HiKap}w) zX0Enq?bDvM9I9j1Gf!z});{9tkL`+vH;5U+4AthYdt^`whfBv6Rm^H; z4YQV6$E;_b(y5)#^K@$GxDIBgCf0wU)vk9mdHkifE`%A%tYtPcTbXUlc4h~&lj(sg z0P3v|Gmn|iEMOMu9IX^_L@~3HS;eeo)-z8ro3%3=j868rAf)O%m_gd8jm9}C97<(o zGP9U@%zS16vyfTDEM`_SYqT{R-EHeRbV@sbkO#I)bBDEtjYiETKipKnF@?-BW;wH( zS;K5*wlWo%d@9k3>B012hBG6XG0a$zo{GHaQ2%r<5_ z(*|c7YOuYTCPne*h#=-j=2&JNGl7}HOl4*=vzU3zd}axA53`b4MMV8dJx82kb}&1c zj<~#~7P~S-n4!!lW;Am)Gm)9bT+Ga7t^!R|Z~;dYGRv6d%xY#0vzgh-RB*;H>j2Y( z>B9_XMlxfVv6p+B%o&q7BAJ=a%wXm)bD2fVVrB*NAhVWP$82M^Gi`9LG3&q;lkV~7 zh#=-j=2&JNGl7}HOl4*=vzU3zd}axA53`b4Wnxb~^Axj#*~xUoY2T~^%n)WMGm06_ zoXt#RrZE>Yvzew<>?vRtGRv6d%xY#0vzgh-RB)g)>j2Y(>B9_XMlxe`nv__MNMa^4 z)0r8}9A+-Fh*`|6U>;=FGV7Ra%yy;?&a&?GwwArw13SPBVvb~vWyUcRm?_LuW+pR> zna9j$mN54)D~YuJt2m;bd5YP=>|{FP^3|*Z%n)WMGm06_oXt#RrZE>YvqAIvU&Rpx z%tB@vvz%GYtYJ1YTbXT4u)^G4q)P%tB@nvzS@J+`}wm zmNP4u2bq=3s(*}nORG7ehFQz3(~iC~#T11rcpCU28S8KIQ<$mDH0EMv zIx~Zr$;@JAGgmQln7Pb6X1>lqrGO(!n0uII%yMne`%i1N@B3>uMg9|$a6gBdo6JmM zrZN{Z)0r8}Y-XkQdeOl6Qygk$wlX`IolFIHlgv87bY!|RJ(xb)p`wANBn~ArQ<$mD zZ00Iv4l|co!ra3wW0o^(nRU#1<|&;fCEK7kcNH^-naj*$<}(YJh0G#mF>?>IoLRv< z$gF18nu*&+bsTYu*{WUG9)>pyJU=jMQ6G2&L|W?&9LXHZjABM>b3eGxHkCt*we84P z`#}gEn>+0Y8&tvZ2bq=3YGw_yR-3aU%&Cn-?aU5s&5nUiuD$gZcrY<@JB(V}j*%i( z3n(5alC+7%KZq*Lc4wFtwKG$z-03JHwWB+YTF1^LJSdC*aD-F7jb26pvqana;RLPu zL&vv23b*Uv$W9w==ttu{gKTx#5N0SdTzlc85w-~&O4JU0WQr)@P$9F3Sb<~(9C7Bv5wn6>%WPxP(;Lc9_ri%I znQ_b%W+pR_S<+$BGgNX!J+p)9h~pX+NYCe#^nDm5%!X?bvw9XMOV;*EyGwFFPrMEFVne;rzTrSxMq$lb$ znI9uk1idduq$jz=5~dXy420=@CnCM$K@4Y>Fq@fCWEYT5kE)6E*pf((Ziw`L3^CPA zlQ6&AKoPDuF%bQk;monjb|yU&A~||>i%5@4iS#xeF`rq)q$g|??~i@fEYGC3^HdWO z=%EuOR50^tD$WX}fQXmT_b@w{Av6_;pUuo>mNAoP$dR5+Lk`-|NP=bEq>)0n4K$Ib zhziEjt_otLP%4>K%wj4K@g>YX%naNDrT9!{7BlUf9>18G&dgwDGPBOn`bPoT9I=X- z!^~yoG4q)P%tB@nvzS@J+`}wmmNP4u2hW+f#~e|`tY+3QYngS-dgdu+GqaW1#%yPH zFguwFZdy{utxW8(VcIhtnXb%mW+ZbYb1XB88O@Ag#xmoW3C!6{QzCnkn90l(W-2p{ zxtN*G%wT3RvzXb;Rm>b_E;CQ3Ny+Dk0%jqzh*``mVeVm;G0T}1%!ABIW)-uVS;O?F z)ewpGA7u6jC4?Eu3};3%M>5AUqnOdm7-lRpj+wxm%}it_5lv8nWR6H-rZUr*i<#-n z3}z-Xi;=J<5G{(9ht7oOtNT*uOa(@ z*YDejcnRE!3=kf51`+YixJV)%x+f6v!gn(9E1_f&pT_gcW?KLFrrI8g_#5wa5#L6^ z!~~(#5gk>fm5BF4+KG4*$BGQlZrtu6;_W9N;&xO_{6r{`#0sH|CHiBtA?Cp56Y&f@ zgiJYDeumaRo>Ny)LKjY{WWm4`8Ub)Ivy##e;`R=44c@IFIk1Mp_}*eI@h&u+;=z$r z0a#D*cK9v=5#J~BA(ITYQW*c*P2|yp(m~8c52yezi*`dWhITVB8If$0=JhP{CJtx#4G@iImUH3&RKa#Nrqq^z%FwSPY5NHh&Naw ziCZugM11EpnHfdI_cCIMFPl&RHQ;3&i73JY+a-m;Tnd+nyS+%k2nW*h4?()bt1+>NofkfXbL-G`4LTc44zD$I1DWjFGpn%J26+p z^JoZh0?v3uJfbfqzJ^sp#0wDzi8IkKVg*KuSdSqm9>MY?8gU>Z;*Ah{y1;S96o4jm zFvUtQJ|s3%~%ygeE%|^SdGIdaR5e; zh%X(L6Y=f4D&n7tQge~ke=1r^5%?xZD=`Q|O8gD$oGzVCU`UCRF@(hX(NN+s%rP++ z4JG1hDzU`J&`=^?l1V21fn`kGijgJmfvyn`VPr4S`d@^WQUt!dSxnrFmJ(H=93<9a zT@&$@^*SQHuF^`}j-e&qhlbLn7+$8aCoaPwm6(r_CE`2Kk;I2EvcyYxBb;~$meE9> ziO>P!gBV((Em}(4fuSWnhE+lQ7CJx-MMH_+7+T^8=m61QRjPSPJi1@ZoD-quu>LhN3!Jvyr8|VNL z-=Fm%+M%IDTiAMH4we=1M+_|yHHsTf&e8FYa7I7XIOh=vlw@m<_p^5CmSg~R|X zFCxAUTTU#14iNEW`Whm>9$QB|jP*~%+f41mDm0WXMqh*u5O+dZiBG{o5*wkc#Bl5} z#5bX=L{mPLfIPv_R^ocRBu>OjLK(ylF|@>S&;epLE-;8o(NN+M=m7D1G?bWzO^Von z-IHhq9Uwk|h7upf$P(8;2XK*VQlEk$psQVc-!_PN6&8#56Ix0vgANeGU)6r1kMl3Jlf1m@z80Y{I@5V(FE1?6#NL5KBPRGa+=cA#-2wZCt@onW* z*J%CE#L!a2v#IEypDzv|H9A`6QBdc!LS3wax|1K%fE&W5Z{6h z5HDe5iFnB>lK2Kz7tskiV7~sp0Ue+Sd=WXBcosuT{0J>2hGA%lKfq!UZ-4*PsJLyw_Ssd=(>09FDmsz6_nhLlLzv_J1qd?RMjgN8E@z6U3dEV`c`^ zhxiqGK->h~AbtZ=%1j`x!#RS8_ra2g3t=aSy|Gy_E18Rl!?FHj>4-HPFMLwO4D^sV z2Q6n75L)FQ-!Y z9TO7hRNI0fC$5He5`V?=Ab}4sBE%_J$He!bY{UUVi6Rz3*@*qnb7B=5K%4~SWfl`Z z#u1N*pKP$AqngAygJ_z8AtetO$1Gu%GehXU0Hrh2nFUNolADE9LHrs@MZ5qDNKD7& zJjsEx=`0B5QoI589YB-%28NmKf#Dl`Cu%CKSKkB4c5Ozg_Hm;riACAokV}k6%_>LQ}}aO zJmNt#gn9xVr0~0_kl2Rhhg;ijU_Ir#12?US^zI^Y7^afyxff?e;xy=vwF#bhC<{eE z7mA1*P%*IpmXMUH7D_}^ut^aI;#!d!Fb|fI_$-zw5ntjhB7P~9YT|FO6U0V=ADjTs zVQPr@8IL$3zUDgHM4muZNh0D`NqlHGO_z1L_n4~Bv z#AK`z;sT5qF$GgbT!`~O@fnO1F&)d9m;s$4F2e;3@fGY1#O1iLNnC;TpG%(C@xCc> zCFYvA3OYf26G}+bFg3(=&;jB$Tv!l`Vflz3LMe$KWBC&I;*yT|DU_604kab-$J7$B zOsk3CW6o>H^8;RSCLYCVAlBej9^$Vsoy6avOvID0`NU=@74a`!8#_|3&o%4fX#z=8oM++r|H~}`DI2kt@h*NO}B;F&GbmF~O4a8}<79_@FITI6cn~#`;J%czGcTBCY z{`)-&i$oF0ut>xd92|&G;|?e>4F?F~Ggw~4C0PH&=Ws)k_#!qJ;!C*0Nqhx|Okx)9 zs1ldMP7qhY5)#+q;6cp8GPT0`@3$W3dy3c~lv?6DShvJ?VMvHYSog$TLTM)M#UYhg zip_|)ANxP?bJ%#|ci3i$)mZm1JpF!zVIuwnn@_BR4iHa32TbJo9Xdcf2^}CdLkEaw zpaaBK=m7Bobb#0n9UxwV4iNu_4iNu=4iK+H2Z*YwL=o|8H_=4=kWmZ~zY`Wq#IJZQ zj3W;$QUVb_bv2ua-_l7W;>Wd;i1=xwWFmgqD20gM=t(8w=cUq!0jjc?I8as6i7;dt zMEp8UCULNeZw$^o(%)*;@ZQR9`|l4}o4$Fg@!7+x8tpHXH!1A5vha7d^~ASZ_**Uf zr!4$+7XBIwf0c#*poL$>_wEkY1RBDJ;M*12g_+joUolFBu+_vCA zomKCpE&AQvc7JDAi;uFY>7usg_buW>E#i--@&DF8Hi{>-arMuOh1%Zw&xD`0sA0xn zTgX0$&ZRVNX;RV(PWDa8s<(D5Xz0ad`2N$?VyzT3bUJQo`dYit@QB!{#W%W`iV$yy z_&UUIV}CvT@4$Zwq_i!1{K*@CceNBB*wSQ=7H&YC;<(|X=FJ^SB; zA7!09hcXoZbxk&C8``6tY#i*g6lsxSOOqYqu+`MRpaq9!Doiy3x0FX^!IAK*40vlDbDxljm-dC zAG$+DbErYt;njkQdTvd>(EO$iufA$|1QC=E3Dxq zEuhsKzgIA>)m?1XX0{q#Yy0(9(ou(b;h_UIFW>0WN`CRs3R+#oGHvd;{#tEog?hV} zw&C2JwsCH~l?1fLK|6lVdvG9Xi+0@7WPmz8xr9sN9j6`Uf|FM8 zW1db1g=aOrq3!z1#n&FS4?!&+a4qO>cYd19SG9(}$ac&<@9xxbwX4MoGFIeJ%2QhK zd86;+DBnuSZ8A7Qzx{KXQp4YF8io-fiAT)&{y;uKWuqR7ovFQkK1@v0_MLxF4AsPi zf!f$MN4F0kMg98@QhVX3%|>l*+ugz$l3`j+Tc~<9KK@wi2vugrOpwTCWw`_8e*Q-?e^ zP**b?wf%l=?WMcLB<=X6r$w+fwY|U7JCHbt)DPikls&Yi?e2!C+j=W|wDs+GYQ>p+SPqMzZOY&?_DPwI3KUmF znN4s*{-P~SSB;wUwZqh?Ya7LS?S;Qb7+P(6xLkteydHq{)qTU+j>3B*4wdteTH7v@U zXY?(3Y&p-fV1_wQ!;Sv7-*cXUnnRZ{z<5iZzb@%*n~gjk$Wv%;+iuQdZ?4DsmORHe z&jjQt?$w=V1LwIUorG`?IOq4@gHXyniT<_=IL{Y)Mf+~al+Bqgg6TIiP2)`OnKRv4a7(7AIn!~_l`>%~PlKV3i-T#0 zu8O3BhEsm>VIgi8(ei>2E^e=)2(pL?$WkaUL$L3P+=V3dFiYO9OD<%|(U2Vb-;yOP z>8MNI$CCb#tWhwsDAQ3da~(@wk!yOP_TemP4awC1mds$uI$S{X3;4hvJvif&v+^31rl^ozHB4vNm%gN+RyQCWc(y1H(+!X`+EN>_QpN(@xz z_(*Gmm^|Pr3jPBHI-@Q4p#x-zJNa8zm)!-#ALq8A*k=slPIbiv`GG-9AN~x|Xe--w!o?{a`EW^n(gtNwIf?Qpi4@xkN4H9Ji)=|CcI=O0zZ};`^cRoHxqXCDd@Gmr z5hKJ@xv!5H6Wq|&)p8EPN>V|C1KL8y{3pa&wz*V#+N1pbT>ernzx*nf?;_LfMUZfn zo9x9vabA86X|=;k-mn*=gLAqoK*2NsbkuppT)|8nkQ6%__yzJI2ehnKE_D$74Y60K z++8lhMV2{;aB)DML8{wkWb%(%-I#)_iE#hbjg)b{^zAF25NqY@eK9|G0AI=BFy%jr)VKvog(9J6E3z{T+b_VniJ{?y+rlA z;3R$$MRJ<6ctb3c$DPr-|H#YEV%R8Gh&R*lN9o#3qq94RetLE0Njn~$vwzWaEILVP zBzG0dEnd!bf%+xL)h_5at@@Xw1CuahRrvsU)>Zh~Msl-;>dh)VN6k9a52K$ioBBahI;F3>7&tZyWl_&x z;W{$8j+eQPWYj^b+jtH=Pbz4jQMd~Kd5oH@Mr%cyUS734g7SvX=JIB7c?n$J{aoHi zF7FeI^1hRUJjDBAf;{RW`g?jnGE!MJRMu8TcnWtBAg3av z{vBNUl&2Ui#16UL3#sqOBVJfd8{|1J;U1A2thCI=QRi(i4$J|g!8gH?;3_Z_TnYMs zX>z!?*dk)&F>kRWemG(&_b`xhM}U+&45ZwHLCSpxNV%QdVX46nTost#<&6#q({TNQ zFwOVt@~98mwoG2|5s%o!oV7Mzn#m#$5rXBu%vbdHYK8j$Ti>m`WM5AaC{D-*U*WD^ z_LTQf@cU9i-Ue zss9g2oRW-Uro?s4BZj;t^j{hRMSr(ZEnO`s*f$S@eH`_LK3I+m#55m}GXtTlAD6BU z#FDpt3{_bv*^Tq%f&StjF|c%h5QH2qoy7@VS>EIiwP}+L!5EVtr0)P^tSFs10ChU0 z2kIH012dG>jf>^-f#ReXTe>hryx&X2OQ%rb?s;#3(vlpsrD-fA)cWG_K0srxD~Dz{urdooM3D#)!`yWI7-h5R4hv4BhX!^&y0G- z`@lq0Tq<7}D#my^p4OKr4G?W*g`A8vF%+A@I(dDl@OJw7PhHAJdCe^Kh8#3Z++mvu zVd})o@}XhEJK%GcibfQb^(>NO;a>#O=sYdg4-PnniSoj5p^0O1`JI^LH{^jku?@ZCD6rr*H7%9b?nG6GrP~NGMI_0GMqq!; zl7~hJZ$mR~MK;SbBg8OUPgEKXb(`>27DV-)^3l6LPaYYEGLFj&1b68+UOX`9ZV1O%2!F!Dk%%wn zc$%IPxpq8q{U!H}7f*P)A$2?M$kNV5Rb+E6YdLNLq?XFLgwN#i31VP?@}0F3{rZir zTBstaB&lx#!d6hpR4`E^|s+6Pd!och+U33>Mq(x?_m5on>B=wZsdN-uz%dhW-)U49$ zcav0Kma=E5K63CRNU1V@654agt90cg(NEa!G@rItHey4VER6H}G=RMuU0aNN^n(3g&_~(5n~i$*^TLy4aCn+tly)}n?wo?<_b5^iaB31#ACbo?b(6e4Mcm=+`jxff3VT2UZ-W81 zvXY}?gqP<4)M!w0Pb=X$P5AR2C-J5UPSm-ledLod(D*0i>oLOU^fvmMlD4IZY-w-Y z*Q=NNC{>lmVnqMoVMrx&ytJXKrQ%aeGEFSmBG?-b_&wl{lD<=M-P7Esbox}WLSWS% zy9evcOFF^&2?sfepvV^pm*h^upR(az;WBZmyMAzU;)7dxJ;pssKl1u0D;ld2b_Kr& z?ZGNgC`(S_a>k1^#77Q~#W)1WIkB)+yXEV#;tAU%G;Pm5I=SG&z(qPv6X9x$UFluZ z#G69ADvwS_+q|X2eP~8sIgudb5<E8f-MA`}}=RzyEINe#lrh^eDpA z&>ui*=n>Gep}sOA4h;>IGvmY=t^4$QySeWFKK-sioR#9zBr2jB zttxso(FvLc@GcB!C>&kDt+S)uey_AniexdxP>UZqiOM@#%xDHN%KL}3NKPr3-)%bb8S{XlI{N|esZ}w|9x{BeNA#f1R1OBma$#Uuf zT!H1|=k99dg$2TBNH=>$l9fOGtSU!__jv8$jnqY(@mp}Yy7wTwdt|^u6i@)~K|MAD z-qzA>kBJ$=5QN_VtkWgv=K$GTxBjNLtjC+%<4x=F#`btadc0OW-g^9USzYPG$HlX~ zM2g(|B#z}#a^_Rwbg*@;e#fTu7ff9g8#azRjks$3Txo@z`?UBLb2BJSd<83hE=`0P z9Pz7&2W7w_cBQ+RPtxSqmM-Qh5UeYdy2jClr0wfMPK z&YD5t!k%ymh11O81J9t=vGDHEYw>s%Nj3=Q>aB>Sa1DMMlZ(ovZ~?-#a?P{Inril% z8{AAuBYVO=ixIZ!3CB^m8oy{;E9Wjo)_i!m)G|s+=?S+|I1=Gj=``P}zw}>%utMpj z5le8W5E-QlpBLq-A#-(;Ym&VEMe&wx=BB1T7Dk1gA=0^2q+sd2B?+bc60utrw)QVJRd{)9ayF00A>(5ybE zDJp!k`Jont>8`DfV~+WOr<(L?y^8(8UYUgpaQZ_W=(YNm)%~IMe9CTU<`l z*zmP#(=a(WOWYCs@sGNyn9E0gvIegp56N#sTFuMWN~c_!CGNJpjG#Tt)jW9!In_-+ z%JG{-ziBT+np#ddGay3uVkrDKw(YYBcProw$k8pdHxPFTMxq@q3#Hd#U52B(xoCE> zoU>dQU8hr#sL2KmE?H`=Sm6n#bPO;=mR2km!wsST!&uEZ`Y&T82frbH8TbD)RBp)r zFGGcqnz~B-As&;1R>M3GkaJfH7vFEI(L~2}P4;nXaiiF&i8d(QNXMZGcc|o=)v)KG za_?#}#^D}n6*}XC`|Dov`fB0rF#9?EERc*Y$Cd`aDQ2kHbYIB9S>V1XWpD*rpYp&AUJQK+dSS+-i9hSbEuu130ahrtuv_(kiR_>=EZK>QR5bjp) z$y5S{`enp*D|g(2Ta|n3CULhq=!pFFkktUUHB>aT2FF|TvBnC=nj{&pS@a+7ge1$S zYC};fEy(=t7GR-vV0q;soH<|bb*Fq`vzTIg5mB@fo8+O*xHO(EFKou&MHz_L7P;$F zVGOP{m(laY?%H>H*^eT=5D)F?jM^!uZNXjk{Z;btW--7m_+MJuE{|@(6~ne$O8bUO z3rBqQqur%>7T{dvi6~N#6>?euE;)9~ty^)t+8}o!G_C=OG#Gf0dzhAx4F;nGWzoFS z7*p>TK!*4jNHSZHPF=;};~gBBF35nbxIxo74~8}SMpq})m&^+FM>j3;ThWT|kcnC` zQg6k4y%n)~E3|)U#k^Zu;lZt-?ocb@xfLVyR=lgX;^17|y80hmVYif9arQeoy#P1M z-SuYNkOA*vFed#=GhAS*5Q8yOZ^o)5Yi05O+>9_}qQS`L zW*m}Eg_x5Py%|@Ldh48gbNIjKBm*+k4C)XyV=vOF85{Lx^wyh^@CbJC|G60r$VAPU z&dqp9Z^k^m8QcG*8R@q)V+c2cIz-KQjGHk{Z^k|;-h*oRJdDG|zcwS{J@J^^Q(O_& z@681{PVRgU2U}N^XQDb2b(OA^C*BjUiO=Qy_i;lzf-^QCV{g>%3guNGO%MHYo$wNk z|GLwPa{tK$T=>#GHN~<1WRN`YzHq@6^0D{v@W!1>_=!s(_5V}a79q)wlfL96dn6r~ z<0$Dm>YxeQ#Yv7xs*;O}gp23rhiFK%8p}bUJa-a{z>emrKyE6+NLW)&7?B`|h@^ss z4H4?Xt2$BtKKH6K;YGTJG6@qOlJ*I^q$-7hEV(kJ}Vrk zY~qsZZNk^#P_?q&khToBzaMA_!GYG`U(hhBvdh$BmA0Y@*Q2ymcv;1*ZVbf=v-ih6 zXvf#U<|33uxKSKv-P&Z+*Hr+)gjtEDp>#|XTB)=|F&m1Z^d zDp-HIuL8Num5oYfR+CluCYZbV%T-gx3pX01BOw56#!YD<%~KXt06t+$L_v;FgR?sjPmgMHe#m}g;`^4O~Y=3jx#Qn{gsNjDqz%u_g z|B^pVuHPj-QVrkAdp^d__-N_;k3}yLy#E{hEibyJp*tCl;ke!^S>5D=KGI^&ji;OU zt9Rp$@<$Lg&k0>U+(%b#xF|Hr=H0^4u-F{FPGXvcSX7VL>^%^(GKZhs1F`2V#Hy#? zEUl8na?RlrdxX2g0KUAY7xW&IVlSe6Eus?iC|8T9d*#%4XKnqND!D#$z) zB=>(Jra1J$Fw^}t(v>vnR4QcfWX`>K>z1aEIk#OVa;IhMxzjRF)ypHLI3&9wH)-3) zY#(TMJ1Ga333sQL@!A``VcczFZkIF5#6Z(OD3EgCIgi<*(7tr|>#mlym?!fJL_4-2 z+?{PHW)^oC4#8L3>xlize%n+w?{ z#XiwLq$3uWk9a0Q$H8Ri9vuhi%7(54T4Bb>WDP?(GW=5!rB3=rKb!AFY19KtTbvcLf$vF8UNRznJU7 z<8t$ArY-btc@&Kw+ioti=dA9=b(wCd>m`I;|E(^&V@RR3Pq{=zv*meFRx0d5V`FFW&zi=PEnyaSAwfo_Z zO2SJi@Y4)0K-qb)+vK;8+teid3r-5h<@K5J$bMWoKOipvwn>np#y>25KNr&1A3@z_ zW;O1``}Q>I_m}E7E!K;Be%OLVV2yj8ll_%3Uu zUH8Vq>mwT~Alo_-k5zQ;oTcuJ~H5l z*lpV}5`U4Skb(=VkUAE@SaZ;vnl%DF>PfA<(^@I)Np(c9(j2@{C&rX|e2;faoDzm( zlo08$?M9bBoKNYvAH;*gseKs!HVeW%@!PA#Ni{foC@#$qzZfn9ZWUZUTrpe)Tos&8 z>8_u|KWcDh7@h?n{J+Z{{aO5>1}BALg}?Xzl09}D_ws`i2jLG}{6A&U$@_#;)Bv;> zvKgCEHt16t|GRiVIMoMPD_Q>)ugjn@-`C1-Dgxm~zCeg3E&|f-5Oq`=>ZB`sMjpD`mH)y)XOL zS*?^MEmn&i^1LvP5O6G_O17O5y+z+uo)`m!&2dHY_akC-X~j9rsB^l9wKAJiR#A>3 zIsONv`k%*BDQ6FNtd;*xwa8oSX023nYU|Eh@;b%3LYueib(&LUe4F^luHG4c(#jky zKm1O7Y!`xXrXC)032!h2T@J{kHT;ch0ox#ilg!EEu89g88?4SA;jz6@vW4(sYfOQ#CoA|HeiW9Md#R=NkzEEQk%H)#EOEq7D7-Eg8B}+tS3lMb@j@`` zh5@PNNY`cQ^gP{Od?Ajkm#1+KAueep}=|woCuU)n{OOXHW8T zdU6^k&jL^VO@*%>pnfMy?9`M&M#Nbu%jnR~4>No{4?b ztKt{Av@a?=idaf51>3Ju>RfyEAMqw$-b89Pr#=PNT)CNdvYt1JQwM-0mv831F1Ox> zyjMTcOFjYSv{ULDC;VK|LA)`E)Xx!1`&A*BcIjs78+z(;PJIGgb@68E{d#IFrw#>+ zE+DmZiL?5yu=?Y}t`=Ew&dSy4IDB>}{R^<7?PmV>WP=;(Et^bcdg^1G zIt_H~NsZJ~hj6MZ7=G?%-hbpGPn3Llr(W`JU~KEn)Gzhaa!!2*Ou<2bM+AyPd0*w! zg<#g%o2hYn>OGtq4i=obnd+{mI&tdNV!SScrV10ZR89>8^Kpg1{q3ixI&$ij54u{)>Tjl=kO4tx)h~#p z(bx~x{6VSa^{`e>3`Xi(h^6(g1Z@4CQfWP?u^;HmcQPl3f>kGwT#5yVw=*uw0|Sx! z{B}L}F|eraX4yMsLkLpe=hW3;>~A;APTsDU{V*p-gQ34t*)R>ggbcq!O;NjwX>&He+lIo@4^T3RGu?u+DIh^FRCaPcoUt9YtNuOfw$r-KPU-%^DwSJ4ZJw0O?E z4;4SwT?O7)ToaB?e1=%6VJn#b)6E*v-`8t+hLdN589!1DCnD5mRlHvoABo)Gy{DJG z3!HuQX4zN*!;$(bVyWzfVEOkq%Z_?aFMBj6`-AyMsOUsrj7x3K;b5&D1%1 z>I_aD1uEZAD%m^Lzfewh#>{vjn$%7K>kr;cKK-tq-0-fR{4Ln|6(t8msaMr4@9Oiq z9?>*1CeYQKJaHn_a@M>0$i#8-onZR`%6(+A`mGGT8$Z$K$VJ$(Oxrtn$brisyjMO6 zdq+&P8X^wKMbYT~S4g5-wu5C~+$<((5{h~C9la$>S>{nN|8p+pk{GL(a3`nwfLZ&w zg!Af^t$OCRt$GDNgDK^ld5WwzsBY3>vih_vi9uB#ZPk0Vou%Ib<359QshFzH=oMUD zK-WuI^{LqD)Hn9Gns>V>3@z@k96}mheSIWfh*byLhJT7|xa5m0-5#sn*Grt1*X~oj zZR@w_Qr}45IQ0(O>`z!q#>c6b)Z8t4{cl2whGQ{!>SJo{-1+#8q(gF3yxLzZkq6@O zb3K>jn)~qsNbz##{pv63C!6K?$MH)sZgSHMb&6ZfX6OQ1=7HBr7UC5KYS|C++6=Y7 z+wVxCcYzM>GALO%NMzzpWV4J&fHiT~EBH#jo`7G;njq)SLqs$j+#J>A?Lc@-=xiSMbJczmmQC+{NZ|2MKbI_Y}a$F*MQ=H#Z z!$hv(eY}N)8a_c1)eyDaptPfgeDiP}O;ksyf92~nY>`-{(Pk`GVD zP!3+IddtLz(WhUectmvpZ8Z;~Pj^ZlqinuHDHqQ6<+vLQO|mPpDq9dcL|xy|P~RO;x?{eUq&V z(3O4b^{#lxHIJd5U)J|@CG|(WD?iF}kD;ChBvC!pn{Wn3J?*%^pbr+_2cUZJb)<1m zVAyk0P|YO08ui@`^27U~OL+^`Le)mEOnq#F+&qI6>~SdA0E;R=JE~V1Aa^~ED#N)- z`;7)=F{&&vPrrG79$&AIUO%ey2azisQZafL*Xy+Dz$t5_vPv3&zIsUlz&nleG2nGQJ#AWgZ7>@51MLN zFMoepo$Pi{_Kez`YP}0z$Wdvi;(H{~sAa7+C?%*Oy{8K{dKKy(lt$B2pN3yB9I988 zBX=!AMVHsvJ&89}8RM`OEm3=MHHFV& zdX}v-Yk~TQ)Ca6+F{US4uT6bd>LZr71k*EbT~FVxey`X0kUX#ib*3VT`qufDL1{*v zxD>|lU0b4#5QQ@0IcP+jocWyk8!i9m_2vJ(`itkAYkO{wlcDv%?QtL69)~$dM<8*3O_*-RT#M%z5D1!SAw~dN7L~WwCCi7mrx-N1uv*4Rp+&`@54~? zG#T+ChVfXgzL@Zi*h{G4Qm$SDnY8R9dYAr^OOfC0I+Cb{#FYlc6*c&q7n8XLyje#z z)JwMv)G+7&Q1&KZRaM{n_`PRPP*4yMkXc1>K)?|k5}XHA$azX|NGVWAP09%jb4U`$ zrKN(Yr6sAUT{JByGe;cK)ItT3QXGO(Q&arC>+Eyo#8*Gh|9_w7KKq=t*IsMycdxzn zc+Od=X^>Oz8rfW-Hpqc`p?S!Un z?HqWAnJb0;HMTsOBh@zJxj5StK=?NWz6WnTECu#GjGm^zzAY=sI}OTur9#=;D@4)w zL5G^UvLs4Mg|ZYxanUl;;EJFuQLC+Osdyvez7@K$Tg>xV+0W$o9+ZW!vJ2Ac+?P|I zVNyM5#tP~`k~9B4?5|*%R!vfe6{7zMU4RljURGIIOOFY4@Zt-gPSMpR&rwY=Q1?(X z2kuOzPP)3ARK5Vc=>$5u5boiJ}oF)$e&1Nx__0W}Z$NJk* zp)7(z7DHJSqBQtss-|QpyQh^+Q?_WCC|euKTMWE*WzeyOC|hk^+l>!UwrLq!4=(+@ zOsKoK1nQP&h_bOd-ZAEmBc06YP`3_ItS&cMH7$Xdt2fb*VVI1$9rC3Uwow ziNfW42z9wjg*qQy-PWa0cV%g%x~WHmx=VCsDb(FS6ss$nu9~(&-MZ(Uh*V!!mrs5x z;N6om;65Uk3it7OhHxLVmO*FjrNS#tMgn%Y@yp?G11WVm9Bu%uS`IbsbTt7}F|LA| zt(D#|X{jic7ppmi$7IW)&HRY$SEBx2BfsV7#1GQbm9W5BABuAD_{#AoQH~ijd=(VD zk0>t3_(VKkfC0lHE{A2=D!d5M>u`Fd-{E)YJPyh#9tPht$~V2FA;l8LfF2*xTGpkr*DNHX3py)581%7{mr8!Q@-$B?A;Vp!o z2yY^EMu_Rf7t)O0yKu`JHfD5QO#Tt~yoJpu)I~g#?MJln(5uklVM8|lV(_^^Cd5qv>58pvVVmW?#i=*Mi} z+Mn8d30yl+>X*P3-swxJL6hc?V8u0bv}$tL3FpGC1h~e)h!w^c|0Ndt9gOcxO4cB0rlC2NkkV){|W$q|9%zp(59>a`%=D#!k3UCr=EPe`I+6#d9lH=EC4I|#C zTG@C*>*xj4B3tU?z8G9ah={FkAAqG)1bmfQDG4KIoS>T7dB# zDzX6M>+>rycEcbg6d0H34uUau&@tX>3CzK3xy`L9eIH~lw`|)d)#OKk_U?xb2hpYd zXtXE`#6Pn!maiNv$1Y{b2~;RRFs4$!NX!29(725Ly*5PMS!Xc@vc`EHX1SK2k=poG6Kcq*8q~lVfdGzfwsVzPE zQL@7u0BjFS&7{unt!g3HHOEoE!;**JSmcIZd&Snp4;=oqUo0whpC|Tco6(}f(g6Rz zaLXC~8zJxLHbck{J8FCBNQ!nvQfj6QfhO|pAUorPT=_}Z%viF|hn*!+V7}yP zJ19lK)1La}10FND86F8C!_ywoRpD7mdHI0nZi;{>zC$HEJRmp(7&gBYo{&@ATBg#n z({O7K=<;a*(`c>+%)>KM!&=+sRs!RaLK}`@)Y_FI&LYSCDE2G>X^}#AnL3P?okel5 zesdPM?4F`K^p9W7(lB@ETjhghouB|vk74*m+aP)JXIWhXS7@{0h?gUha+g20~)uD`Mr; zOWaz^(goLiuC6sKV#025+;*LRWx;sL{_v#*3%QPhNp0UH?~77<%7wGU!0b#3`s3S_ z{W~hP@w=j6ZJ|aKObVJw`Ik^N@qeJ6KYWM2{S`N(Zs3~*@4rhGzhZK{n^JF}lv%Xv zhIHHM=byOjl8g(zzQ zb9RXW-tew0Ag>RgB41K-C8b<*izw_i3S;+<-jUo!N79iJ?w}+2F1fNJX+~%6AaBEy zsq}lv+kG6OUeuFxBfqsod?}(10SF+x5+(pN6fD-;hxp&j9KOwYe1|2&D z1J6&U$A@6xug}oCjxred=wzyK7zRE!nfnfDTQc=OEYk9 zK#YG|fY|T>KrE!o4*=o?^7{uu)wczRf4wb0Ts&QX82=C;roJse-1N2v;>ouKh=-8@ zBZ$qu6d-P!EBm&`1fCOHt4}eN zdmkJx8p7}Xqw2`@Z(!oa4z6q5;N8JOIpeUjW)ik~VBD^!;E;K|}UvOLt@ z2N|$p@&QFF$l<=Xgkk;g){6~mGi?N$nvayaVf{2!7}nOegkiN-mM_h=ksC{M-x7wk$6N^_FR0-`1k;+Af_TS9e$R|ae^L#( zFD4NOYsh~{UnUB}x>!?gSSth?tst&X5{7l0{On{Op1#}3uI^uh<3)yrS(KgZAzez+ z05oG(Z72UDwSaK8tO9$0BJ3-<4(#g$1v0LX##7`+9APu&)OR!oCjF1%!7d3;U`) zMT02};@G}gLW9x1=u=@|F31?q{QsriuCTA~am)7g1472_--Q2bUr}_>6(H`IEI^$0 zS0#wN7QG#VowApL80aPs#TX$$OdWFFWo?Y$4lBDEuZ@sz*MpJ8LoFl8Q-_NQ+6Y;y zmLTR14hh=aK`Kws#>kS#WHEVwA$Z7t^03=e?kc^JpiLg6HSuDUJReeclLIM!2&Yhl z4?xO~7a-j(tpthJNkie?-M)HR7m498CJ+P3(GQLA7aHv+|0dbKDMpBi^<`(N8*X@n zI1rlk5n?3e)kpEapj{2*&gM;2-T>t|{e~C_AAC~`ga^MN2EyU~D1GFcVjw*EO)*Mb zL(BYS5A!n0_D7kgy&(!Wf=>F&BYS(lSviRM3Q^WU)cH@uAZip|t!M4Nc#jJE=PwyV zB{f1bl0J>oMv1EfU;s_XF+lze=l|{mpk+~rB8JbHbnVZ95IrPoQ#w z8mt@(p+zmx2!5HU**EeM-3nawC()eqSn*dTiaDSY@?o3< zCT9wt@Zfb}?gg)lIpB>}a&!Mp6NS-lM#x5A0H&%&A3|ZR<;Iwr#kNN8eeZlFV!X&* z2$OKw^AejUOq!i62U^R$%u?OgseK;iegSRe0Bn^-w}p2&I)VG3dNin=+|fP~x~+~j zht{`4*?ylO9BtWz7dzTBbO&tezet%#UL9mtysgGBRCHRQ=!SYj{vk~7hK0!u(eKO- z1IJ`q6($EsBVT7X+marJ$!qvTMSCDyIzjWY?skx8?dy1l-T<9Cof{DKf| z^}0OEUWua!+^g3?F4^loq`@8FP`<-0JCt06jP1km{}Le+99v|5 zn%=0+FumpDMAM55N7Gw8UNk)mC55BuVWbp}riY181ezXZs1ay-gU5@eH+Q^fddcM2 z1x;_{I8jdQS#?3vQ&C*&40J7`tWEF0$D-*yJX~2=K00vkr8Cg;UF30QY0+3w!fD-P z2gz=nSV-8~4gDyNt8|A;eV4Mk%RcHN=+cWhZ=5KmZx0l+C{`5Hp(l!YX{=UEsoGfK zO8>?^))cV05z-5WFmJ5pM7j9AV21f)wSw0FX{=uH`f9@QL1H!G^H@>xj99Un;M`m8 z*n1F|t>wP~25b3i;>ZL)@Y*`Jviy9cVa>~253TJj50Ji&c$RN6N)`Q&C<&XvPVYe)0vc(lM3G z@HLV4@u{q0XS5i%-1L%Oc(IiH6JFT0b^ttH?O6JHfZP;KuxJ3RDxR{VWDoTibl;?n zKV$c&FbeJTJgL$04zH#LvHT$0V=UckVzD=}kj_NQ4KORXAC1;?mAqa>{m-JfSLJqQ zf7BI3(Mk!!NL850s~x@%*meV1SZMod(O#un62~ zi2OIt<%WWYvqwYG+oz8v?-;qBbn7*0A0xM<>F8&-I&kIa*_=n|!{t_370nxtVrP^62#n81fr+=k)?f>4t1s{2i7hZ>WCU_B zfQFBdrywIoM<5NB-A7_P;Xs2&$_@OhBdK*)CV7WqS_hY-aBZX36H!7wUWKED<76kx z&XMwXv)8MmDr;QZ%tX};LX8hY)nKAI8s*0sjMwD9z4Av^a{B6fU>Ya9X>*Dg122W8 z!5C!lE``MahD6%SK`MpB0*xP_s45!EA<~EjHX>tz2KFstQL>$69t$+afayhOAX{Uh z45zxs0*&T$a4gce<6TWa!-;y20~$4u)QU#hXNu_@(C7#h7>#vkqkI%B*8()gnY~7g zs4Sj?Zlj(6!WTf~;5|6#;=UR|-dSk3Zm-J)UcV0iFF*70CW9}+P;#6o7khnFg@s#_ zCNei2>+Oz{U{p&;jl*m_pF-kfC&%?j5NfcF3>q9Kw~{^_L3i`zdbBxC4tD2%hSS+8@?TgK_%RXKT%qzr*{M!8QW&wx8cM$;!&rt ztFRcc!ST8oFq`c(KN-;6rCrH@<{%Onq1ic@R;K`(A(hb7`wcusXg=>D%Ds3neVHWJ z^*V+4s@ODaCwOMl#&>|tP;z`1*mR)@?*bd_`n?NmS|Obkn|n(YQ#i1hreouakXPCT zHeb(VXx^jfS%9X95@rFKYl8$d!)61T8iQUA4K~^50GeY1|I1>825abZ0nGvGo&snp zC@BTdoJ0a6G`Rz5$U;Cf$NVFGv^fnl?y$@`Djs7o-5gRz91;FM6sSD+1jcOrd?20?;9aADYrprie1nP7& z)y)7$=;`V;Y0f$G*u@T@1lMF46BEn5Vj#!|^505yvI7Xzq) zNM{9VS_(b@1fW{$Hk1XRcs6JCJ&PHrO?2i1j6smOyC2BMBq>^VK1+a9)2RQ#U_=UI zjdUPYI^e%7Mx@}MJ_J$)^y5-kkvEkug%#aF0wXwu1Lzk5I8g?0YC^9OoL|F5!S@dk z;5>tjs^AO?5j=RpBLm-0#0EMr`1pRs);cG@pP? z3%u3}*gQo7BQ|CIsBV(nQo7sU0FDO~8^I}kMHKv4KLJi{#8(Ape30NdNE_Dx93scH z0B0UeSPO7w(U!FUXDXCi!MTU=O##3;r-Os161CH$xt2R?r@XYG^C&ce1+;!W294d~#BlzQ?>9ad?1lm3oMkn2~(Lb`-;_q(^S3*Q<=wo#cDx8AF*0+tM7kT3!-osf#&ysC-^cK2SQPEZ){~J_QMgDVg+y>;2jJ6^ly^RNDrM)Vx(K>Mm#Q>`#24!fe zpUZzsoqMx^``~>t7=TWsyzQ|4AL;UTF}KOa-F(aCY`MDGe4R?ZgwW&Edk1D3<&?Ao zv*KvlxI^~vZ-y*#p6qmMSO{x)+!GJg7)E0_l(Pek9>>*oVx)=VYCB~dR|6A|PG@1P zo?#fP+ac#wEjqS|?h+__CoCGr)pkJ;j;rm0mEpMBE?D$ikY}~%)58^0YXBUtTl5|@ zcLqM!QVv#g4PWqb1y}1y-n->`E|Jh_1-2UK{MHH&>bDycv+!sDYcYSz=8U=89+>l= zJ?O*lADgt1U3(ZQX?- zmsw!QSv`ay=XV!|{7nyG$XGGm2Se`DLl|;ArS5|vukIlXIk~$q&>Mjh~Z9kU1T*1tS?1qp5j{;LwL*7Dh`?1!m^bl*khXzy{vi58XrUIj0YRKBr zhqC>0M{|u|yNQhCcBA~m0K6J>Rt5Y#6&(cNt#u1U| z1K93(TQG0$QCT}bQN(w!iawP79i|-bcGcG0x8`Ea{b|?A8j9;CRwaqbbFoH-)6jVU za$YyFD!H8^@}Oi3jn0$*l$5U2|9iO$_KcQ&52hwvMV-`z2wrgivWr-7FZcl!x23CC zaQ_Lqv;}vmysN03pSy_4xrP{H<@B5>F!`~IsGKjlh|1Z12wvtbFmvThMaY%&1(>Q< zj;SkE9FiMJW4emk3GQB5JNz)s5uU95uiA04r2Hs%GuyU?aBdFR1UM{v)Qy48s+ALj z%%P>I>pC&uUO&MB)HoXBiQIX86jAmF<}(_D`Cd0SPmS)BBPgtM0{kB zmlhjhw%ALb{Y4_g7R51ilS663ars|-6DIZq>H-VJC*YE>zI76JIO}s#{@6T*-1E_= zwWNf6xr2ErZOfNEn#4gg=ewn0*&s9=pRa>D?UQ!UiZfQuHY-kq)7_Qy3~K;q?9~c`_zb_fJ99DGE6aSAYliPQ#Jp(yG(4Pu-l( z&u&f8l;CBiP%;5Zs)y6D({dxPS?w`jz{+WQNJA*odK3p$mN$ULLgPDgDGd|y*?ynvc)+?iU0DXnPu z1>iA=k`PGpE0li~JLJ7+;|0{m13GvC9{Dr{UIaRM6n7Emd_&tVBF|sZ$&0d&%jcc& z8NMp$;EkV`kdFyeuDLSA7||olQ?K%L~liX#N%8P@5iI zk(+rXLiDIQ{NlY;+KcxVYH!a<(_XySha#@ZPA=|X;rISntq3i#UR{d23M=Z0s7Qkq z)d>_<^cS7HikWjeM01a#8JT|gdI`SUz=l>r=0afi9VHb4yPcF>2<$$mJB7dweyIrV z2~X4D>;TSybuW?|dlfWMOu>8c4OGBmg=-cdW4PRCQ4tpYaxHm9=(44f_Tu?~t{tgX zU(~-_vAkK@+Fm>#P`x8nFwy3^?Cf&5J?cMPERv3#D!fh}gmibE=+UiIXB_Z_k~qDbbrM2fkJGomjW>?)s(_aUuiEK zI;Ov+sCYcKSqjt0rO~&rgm0mZx4?tdCheHv*)ZYH-v|}{{Pu15^Vl%q&)k%g0 zxvyuXJLlEM=74n+YX602kNBLSlO^M>tVp)G?L-DXrS)Zi`!-Zr-8pB0;r@mk{|4L( zof+;sW%4bvZ4gp%CAm=1U+flMkP2>rQ+2CTSxGpYeh-yY(NpF)GQat*9h?YX14&DKCnq!Nq6&?@HSF7?o5br?tqyhSs#9Os-e= zI&@X7rQNM5A93m=EV1iDqQa+gRE^bI7k7l#UOUrs;A0O``=ns)>Ti6H7l;t^j2aBJGYfM&>Vx$ErPtbwHU#^*ILZQ zJS8PZLi5!&ZtY~nPP)`e3}LIc(rOO7k+HIJ91FIAiqaL+za&Lzrfh*iQDdi&DQw+h zd*qCw;1jG=t|+dyn_3EZ7Lg;~ujd#AcCMLdgj_Rtae=Bhp;Ml(DvhO1twd#PRVpik zA4hwF7E|y)D}&Ht>@3dJ6pT?Fp^{PkCqx_0)a?Xa)*7**YS&Vr>hM(l&)6onx)P)9 ze%LD5{jhYhRhpUcfuy(^%Ae>Iht~wvho;w5e&gw{9qzDA0yh@1=;CcP?@7(!Se{UlqopwR#Z#rfCEQfwUy5J^vUSjN&`s^ru>VtH=aw_ zSX*(DB7><%k=)2P`Cr*&_jSdyVfs4Lcv$=q0L`ACK__5ynoc+Bqmw= zTL=q1)Iv`=}G3WpNq3fn!> zLO7Jt7P@)zAuLzLLwXRX`4dSEqARXSUE3Rh!anoqsjD);e--%IK35}T`^-mlRnO6Y zlH6dd^I8aFJy4F)>m4~i&iD`*1_Rd@x_3*Fn=;T`V;ID;iM|pjOf(JZs+#D)K!I-a zQmcttvg#>=%w8WguN*>YgGOvvS(gMJS{yymp74a6znAhimcZP-VWd;2jWq_Mbya;YL?P)KbT}39raVjVWBXvK1{L?CDd0MG>Je` z>l}Y2KC?Uucm?QoxCdj%0@xyBsW0oDsIM$Ed(CTFS#F+j@E)qQ+&H+`P$|YP@?d}E zZ%J)R^}LmO(zs?~=s2s9a>$HnWn*N^pGG%EgS|~9jZqVLwmd-Tpm;(w#rIa+Fb-Z8 zpg1}H*yPzQ45Xg}kVAU|lvdK$O||B_x(QlqF<3$kt@SJIqfl8z%c)-zwAKrVwzgI` zy|p&4DO&4%N^JsY#!z_^z!^!MngSZU6soDxz`qmHS)rL!D4S*h8aA&0m=%u|;{j7Q z%a2W!6=sb5hc|~!Uv0wADZ1h#bjnq1I41-u|Dv(SwLob{()<>{Z05$+%0JSvM*MuKE1mpVu1=>rDZX^Ejj{)QRC-$| zeU-Mgg~5L7dqZgjpj+`zo&fCAj1kfQ?vfA(UId9{>Lu zz-RO*6h+6wgJB9D9z?9M?luf$S~eZfE4!oaPxhc4I1>Q4N;f*7c!{*WBLwHuzK+U2coo>L zPO$d74d}zRKnBO_UQvFNc8Xi6mOnpH>`MFEDIRpYGdu?lzlH;Vt+Xl}0H_V018^0W zRRQ?2!G8h3L?!|)AhRJ)CHwFTF(Od;Gr`4`U)2Y|Q$!%6lj(8w?N}LuSfQ+=a36g`2iNcuF7|2w3MQ55O>h>v>V`M1MC4Chd=8H zDju%y2^+`WQ7_zK@2Houz&6K^`MRdiG8T6XqBKg*{l`U4OgDjcAA1XhF0o1AO?H_0M;sBUl_4Rtr- zY!Pq4jUqKlx$5IlzmEa;ZjcfR`x6t zC~zPU#o2~|K=cmn8;CT&k~#=hb&k3ZQW}_#TjB;O?IiWUb{QY{*)l}A6|xeSk?XN3 zi+>tkr#TA$?f75B{dW8nT(`#Ggjc;@L>NqYLzN)gxGWRY&A41A1g7BfiC`Fo%SnP7s$FUsb;czu=5^$wY^!Vv5ZOP0%X>oO zW?X8WtVo)O+lLxIJc#2+rGXltQKDbN*RgQ*M93=qi~-fe9>8Toak&PUzEs4lxJned zqHvj}A%XJ)A)_GC29y&*-Stmp(?XFr7nh!*DC=iHoQ)ZpGyR z*5s?;YMPK4gUg*lW=CB53aT3}Lq)24pKz|Viam`>oCswD+m6d=BH2P*uA%aA5R0n- zkt!UQ@gkKcF7FBI!;P{jMwIm&E}g~YPFzL_h9%mihQK6T;vgqmQ8!!$2wq=Y-VoF$ z*q2Td)Qh;hP8&xd3%J5)ozcv|Wk0K z>!Q3Xak*0PCTf=&3X!;s7t{b;;?onukp*0x7P1OAu*s&5SLQm7t|!Lz4tUXej7H|~ zdO1cJ$jvn}f9lM!tAYG*Ju4|+)I=&-9YvQ8SlVm^imAu+aGbO z(lR&IK+XX}(+4Sj(P3Q`yo$-UBk; ztIb0E4dfJ%_Xr_w2680G_&Nu3*EEpbKu#0JP~lctVb|BNpVUAtH;{MI!8ZWvbpvS@ zI0HoHE*QwYK%OLWam+w=2Dwb+;-G zc@1G6iP>=%z`LKbkfDG5oD)$-4r&q8LjlA7JUI%ih5Rz#i zPXZaAZek(J4dm7!9}pRwZy=jM#z%t-N7S;n=lx!QIH@)3~Tgt<30kXM3?qg>o_y$s|SkOv8}gMr)}Wb{y6 zaM?h9n4yhGSjdCAmGyWCWKSXFrh%LR@(Hat_5}tqiZT^=oHCFCz?mrW{JnvEZz-$O zVA^XS=Ym`y$XgBMB_KZ$R zM)V=1jv>GK$|-ZHrF_29S2gEbI(?x0WMe1=2Ol?*w&0I2Siv`Nv z;Al7n^@(|628~{;w6gsMBwn;jqFpN$55JFatAbm5wMuYS(If16nsI+ilxRHkXgxUJz08{Wc&1F4Oq*Y z++oMAftH~p+>d|Gt?B3q5*P3(rG5k*jc~iHN-8egy-6^9SVN)6Sra|gRguaDw^OU6 znu7aTNOc_*spqVw$k}bXXSaq{;U0*4<+%>6+W*vKH#rUN4pq3@;eO>rT{dzxJ~y*u z{0hGcS9>Km<@yDr;3BP|h;@o<$Z{=l<#%LuBbpb`y{tl`#0PTRao-R^pU|Rp*hPAS zPOgJBF9o+L23s~*8QA{1Y|24#Zj=3bWrj<nVj*Buv)pR z@C~sg*G#@?B`y%L9jrHag_`bcPzKmnfW6mqQtwPiIPgCtlpyZ*IN21A@)b~aCM4v8 zwD38}HVcjdXZW(TRm4kKN;B0LkvH(VIc2xGFCE;d?7;cGgin;2lF5!rKT*6LA3_4& z;#R_L2P-}`E|B{sKwC_sH^E>0ij$Md7~45DfcsdUK->h?WgMpo#}~{@8P{OcHTXMH zctn0P61+{_H!Gb(Vv&F))-a7XWi7?yM5vl$NX2zN9dYk*JSuf3Xk5`*w0ARBW4hp^ zq*kxpw?I|^UPPympQOvOHNAlhvP{!{UM}TFG-~?dAuICxR0+bl!st(tsD!3}s=Vj; zIwwjL-(YZXSa7Wt*?tDePpRK$$~Rc?vfT=G2{d>sw&?Hz76k75ZU6h7%CB+H`NeY- zTa|VJpW>Fki@q5le*^Iog#2m1EQI{2!3_wRog6+_+?uS`xmN02%XO{{g#0KRf1HgA zJ`HcbQ`&i*)yPT3j0wJ9S}z~>(?(!62zX;?-!`S4UmQrRef7@<*dn5Nj5G;*cl6}V3st}8~fr6XIF)&VU*W!=pYvhJn`S$6G-lxmg=|OJM`+~AEDXW@%3+vqRhGTnM(F<&A?v?` zkoDtysiq&V7ySZdFV>@r^ysU4^ksxb#W>i)ihZgm_P~ACP^;qk+p*d`kuGgl8lxGQ zvlS*JM`yB?nJ(=O zQRAOS#eS*$5#0-V*|4!ysD1m4&z-u09jDYvSsL3(4cv2YR#qL)>EUnucqKo#cW#ha zr7eSRh^MtXFdUdoaXYcz`5VpOsf@%U(nUL!o>%~GvI~~)Pt$jy+vY>FVEK-I+=abS zQ+2BG6;|i((BQAoEV@(bSBP9h>%T(FIYvcaA)$o=cO$Mg4d0Epfi!(L;xJ?TN@+}m zyOoC6RZ{nW;Sz=H0fQIy+XIHzXxSbl?n{?BZWGz=MI3e+_aY8c8%~_D7l~c)^*S)% zVIpSOMNgUGFN*jYiLX-n*NAIJ`@TlpOgjHH;tp_JV+yw*@iv-ZK{Ga2dv>em7<|># zHM3+~5P#z_t&kDyLEAXGOoeq-&n)Qyma&L7>Cre2h-heW&w=;`)Fubw@x3Y*pOpjg z(ez^u7`9P4Ghi2U9~fFt^giUxgVyhZ?5U956>|5uWR{FEsLr7xMDt7A_QNxOM*jP8 z7fsRoA!rpP?1!LV@TFx4`hlKuoCh`e261Dk`!|TgTH$`=V&^x=MLM1T1`Iefb^xN9 zlKTPZJ*QyIAmb%;QR&x47|P^MqY(|Eiw1H>7QbY4WQf79!;B*<^Htd{kf*?)jB`DG2%fE!&ZfUxt&0bo{=J zNw_y5Jcp29Ulk5IKee$3_jt5r?6YaO;D>=yAdsJz%EG<&Od0O^aq2|e^Cl=igJ(j> zC)8#klf(LwrnH60EkTY4IRIokkUi-#lN*A3 z6rXtKH=8kcEpqumXE!Elkjb|}P6T1pJ)}e9-AfrIlASqO602*Kw_VIUFo}xB`v!u;My*6v)~)BlVQS zaF3VbX_B~N2I2mpe$Vg9jKcjz{hn(m(h$#@d*S}H9?wR$qxOT=1+){o0%qS!c}FlRE<(mx@(5kB>V;QG(<3Ow^w{sH;^eXhiG7jqb3@`4 z)cYtnaFh)k<}{jrROxHWmCEC(#&n4zKO*xn3_s$K{1#la*{5wiFc`lm+5u6Vl`ROh zxo4D^Fm1&B_AoItcp}k;FU&opG86s&g}IT-I6c3{50>Hp?lHy3(H6<3;eRAlBn=QB zs%G2c68?>W3Txxfj#f8|4^>|=J-gK#Nt~Z2IeA>^DXr0!)qH`nUn%+olY@VjfemGJc!rz8d(&dxN zn{^kyK+#a4s7?#8uEl>)8=}CJUvx-|0;J??3`EQ;=cd~@KpN0#21}Z~w2e|W@1I9g{QcvTc z>RR?%+I*hbLPX;Tfty*6z06`yrxey&Bl;2M%_yRlmE zE+O|b$_$)-S#|~nIiI$iQGCL-={c}|v)$eyt0)=r_^seZoo`gp*`J=CLD#p3RX9_V zvr0`{x0Y5toz5ylrH2*N7=XNA#v z4qDPa4w}*V3pmyCuVvLmMV4Gbo64pv9LL~KVs1y6gTJRG`&W$J9Mb}@K8X8s_!r_o zi|h-OXSEtO#-0vtO*s|MY;v@(XyU_t=19uAtQ>K4YlO`S#IV4^_gUCGSCp%^aXAgK z_z!v{{^9r!!aoN8N%$w@zYzbG_;1F4C;qwkpTNHW{~P!}#NV_J8u53)-wpo&{6q2Y zh5s=8C*eQMl6M0~UFuD$hvh8X^S4-^;GjhYuGiq7wU0j%ig&2qQjXZ$xnUU}#FPbG z@{rrgCbMng!wT(qWMq zHbg6h*1w>&qm!ofFXc0Hjj{(q>n{)J${nR%UC%1XJdy0y1FCgbsi!KATDp6j+c|o= z@d#g*+s`TQzTzam^T3+h+FEY!E43xt>-UA;V`TqO@o;rO=BwuR>ir5Dup6c9XwT_J zgRh!x&wC;rz93P7Qci^!W4dX`ZWr2xDD^}Qq@pvpG*7bJsZj7$*l-1V69-V?2T_rh zr_Yoz=9(Y=Ed);c8@W6zyJKLSYF3@(MYz|rv)8P)vrRN(vl2t}({$ggPQ_8w zI7uB48;>k;9=IRkZjzDi0IAvwY*NsmKx=_}UL|ryXo?ZECb;IBsg1A}{>Di(e-J(# z+Smogkh`p|a0$}Yu-j!vX$LhGlqah`@Ek?5>J(W1SB03Rhi4VpgX22xS@|)9)`8_! zTyu;6k^B_3nfmaVgu+EDY6F`a6fh*s60h$|WZSRsQ4 zs_u(dxa#-pk-pQf%TnAcRCNYsqG8q4R&6epbII{lZc}10 zrcC(AY*tYqIM?9M*Q*h7HK1{nPD1LtEn?>w`)nWip~j1>t7)0FVIHol13UN zrD5YjNJ_7+x}wk8QeEARV7QIy@yZY+vdLZjhuJiv*v7Qvny)Dh*%N)?HpJC~pf&%B zD%c7eV~_{&^bhk(9K-m^MqRD?fiH`e)li)%##U{P*94{8s?9o$0r?pIT(Tp2co-p< zkiRnjyrhpMO{A7bU4+&83uQr#j({ z*5~cipf;CS9okqXjK3zBY+(FbA@5@@Ubry#k8#fej)Rwl&ZRJWwUv7DAGVGpd(~A^ z$}NlS)#YZd?SEF>vh}4un9U|*-ZkHhw30KRaq?#rR$Cp4Bj3wvtBoD!gUX9_zhD`Z zV|&uk+Uh{BmRuH?B3tkk#32r607_Ru4ygBH|6>lw9#4Z8L}MF=BTXV?{&nu z=pWuiDWHf8_B!G@oXBDj;_DhNs!x*>xMkf~{nNS;2L59ty9zPd&>qQ4fXyEi>!P~4 zr~E0Iwtpuc7{KU8^It20$#`1kq7JB;gOr?K|3Beev&`8L9z=vOLnReLtg1GQUpW{HDu`Zac}Dpu)ybNxf0!N`r@CccP4tE5fBKbFZ&2lY{0uP6y5weI?6ydJ=cy+|LavXAB zP(5%m-DtMEIuP3rXTXVL$>r{_-guf&Po3yL8{!$3QiRTanI&vzQZVc+_dQ`}xhdCO zsl1-r)4c*LoN=zBC%3sJrd-<-m05C}qCFtDjFLQ5k2dY}GGN61yoReGCATGOtscNV zm*F5nF2jAw^H7~S^}(&yRXSke;2@Xq>0n+H@x3WwTkpkX!??`k1~bH|2~V||*^N4R zs(;vo{w|p=qU03iiRX$&d8zU0O4Q3mI_agJa(r-0xDoF44qa!mb~56oft;a{i@epY zbtj^zjLPTuRy-g52R71VjX*=24SBCXimg&bprkJ96~q(8C{gipbPQAH`A zMUI570*ouURcS2>84nE)ylEGlQR0xBQNnVisP_u(OoNNSvY2fv2y*PA(n@#(&{UYw zrzAXhLrE*VXO9VqNNnSfp>@bo%zK60A={aTz!{hpn~_*X9s59l5|dWK)sVaeind)FjW4#Y6FoW*cde>lbZ!f)-So4%@t?Mf>L zp1x7T=e{KSKSQP=`~Sal{{!dgMY#t8>>VEhRvwbfeGv@iMD~l7Q0z1aWuUY35EYE4Z|=N>a<$tPmWf}P&1V0Y z(u(IVMc}u!IN%7q^Um~=?;w?jr@oMQgTnmLyH5qFp@~Y^D`B)!V+zgoS2OXxC9g(s zqO&Nhk=j?PQA$?=)WiJF-Nvd%lVGIbrt7vdv!rIqM}OFaFT7?7Ur_Sz&5B#CufR>g zcz6x}A}wpIwyJX(xiPA^R7!LF)eX|Zo8;X{t!Mrn&pN4n&C}>|fclfUqoxBZRe4QR zSH}quS@0Xit+&7^Y4PII(1+T!g@#hk67QbT1J(iq=f#;DxVAy~J3_Xe>j<$_RqBSs4Ix~aBOcnisL+rg^%cC7QIk|llhkH~ zLDE)T(x#fut*ip=G1+R6R&bLy>g`WJq z618i%X4DE1vUj|KkWn+8{=bqbv6b2pLpDv;c1>2Bbc3ue-J*tRM^ zv9qxaa63+UZPhVtq6~s2=z_-Sf?}%YOX*U+sQ3(1_2y!wA3eW{L(giit z1=*dfDrj&!wI{4@9{Jn=1q7;r-RzSe2w;ns*UZpK_~{8r96&Er8}YONS9+s&oet756{1f znFIP995V`2UA<=fB|h+G6P11~7_Gt%S+MS@Uc&=zs)v2bF-e=mFU-TL5$y|8N7~+o z4o{pq`J24jtC`(TT^Hp@=JM#};Ngq|^m3kU!qYJF5X0ui;NiRfusdk3OYG^V;h#v=%A-A0sF1fWOtFc%*(5DfhEgM)80w?b-pl+!6Dj4cDnf zXSJT~4n(sNXH#@%wH;pI9^FX|viCevS;-eEy_5Qr%L-jK&jPF&9!qhrs6H<5>rp(C z<0#JXV7%WNQSazcXAGIed%h5bab@`{s*_^}WZ-}ye=S7*9Q6G8>G|`~@+Uc7r^TJs z7WM@{R>@#9D(kGSb5UQAOFUv34t)H=?5N(Z~B6V18g-&GyMdoW$qAgmki?TSXx zjV^UXaXQkYu9*IXAfN2Ar#-`pyl#;1T*DB3JTD(+6<5PNC4hQ&ga7}C7Ijlc!jqMB zgS6q~(p_!lSPI1oCY)@*cD{}!zf*K~)ycjHWbW#m5!H;6z=@Y*tnaP{`R~49mchk;#F03=#+sH*N$mf~uUR^iyo32rQPqnT4Uy$=D(-W~c zq=$-W{p+>)3BA zuKDDl@{MFV0+nUdskb`R-eORBiZ=FEo4MS8bk=q|5pEJ1t3%@`D(bCv4a@{LHxFzL zYfFu8fMzlTYuk+B!turG%JGifKB|X5)*`heR=>sT#-qSeU_f#JEd#4xu$I!P#GH!> zT&`Sl2`mlw!zpuifnYA3?1O5=;~#yo0Q3g6=?epVk7D`mADZ45v#s{JHY9zXLE9qA z@2h%y1?q9=G&G0AIeAi8aSP72^b*-dsveG|xMe_ZAY=gZsZFHnW4|OvGC6;5%|vV@ z)Miq8q}sVwO=OwJ=C`M2mdq%k*P_wzw@`Vc+B0kkqSg$|ED12I4cvlUW{-a_vt%gZ z*(ciYvP{eZF~#`=;r5oV|tBKcY5Hjgg#gIm5pj{Q;ezU1Fu z9q6B>%eF_tYQdsYRZ)#>mWOOiTDc-=eSfsp4|LXt2$|K4{@2R7LuYMA<^9zLbI0k~ zK%>*L!E4wpk!+S;ecZhKanESgL};CQ3_usmv}&NS2{NizaLwUWgxr8!5%OwGj3c~K z?n;bKM-}%%Ivad+l{YoI6;;rR0jgsoCopc-74p)_6NB=jx=?c=9UGvw@7-9>@KQr9 zKe$?P>jOOvXJEUYCL1Bohe{Ct1LFCwjq*S%q<&FqW3P2O>p8G|g=jwXz)o#D{!M6E zl-exBWRXk@(U?PFA$&spKg(MfKP~~i7Zz-X=@vAL?nJ5M>`Nh$ZQ&l8*$^5XjR8&? zO^?Qk+?&wpa2h>7FKdU36_bhJw&K`X&r>);#xa@hM8kV-!7W>i)o*b>kH_6!#hyj( z)e5S;!|dXo{1sNBUzAUp@T%HVvb&1M=`m@VPe)%>n~mOZ``N8?g~InJd{_sbpbluP zGzb}DEOVkVOPb@FakPV}^Agxpy=a99tLvs{?+a6m!MW4wCXE+e_dwOPyNNR$F6^T& z*x6>DT&c99>bf2M0~+(O>a)7K8VK2?jiqde@{(|S1Gf)%N~Qxk*5?q4WyYd`Si5aP zVT05lml6oGb-;?KFY*+OSCV5bbq&oPqz-jygyMC)fe+0hs+U&eHGh0WHwUR>B5orU zS6K7J^lQVQizRT0xCtyoT+U}e3fGb^MzeUA|0eJRWZ~opYXUuh77a!hJC*hgR;Rc} zacnp*{S7MajzaPn*csg+K3FsaPOcZN8iJ8{dpbG>t zEE(^67@@ib`s(CiAoFq@J2XayQ`Xhv7#7YS`neGp0lkY`E|M>b#N=dTqBor!p$6GL z)^)ZdbtHP3Q4}%~9=;iMAE`E;dqt0|i*PQ~z{Qom%j!^8HZTX!IpehuYV8Cee?qke z!l^nRFNh}S*UT#;j+cU122WF29^MG4-Ls55#B)&|6;#lzk*dGBAvumhmi{LHQLr2? z85dJ4IYi=w3)VzRzJXN zGTXccqwY_GUqj<+N{e2Di(iCX@Oeg0)2fomXuH4uCUQCgR+UC4UsJpCTdBujmQeF1 zH5#M75-|ZO*b^*FOuu#p*G5lZ#=YWE=?VB;uP4ft22a56Rpg4=NL$9h6JYgVj5-DD zUfpA`S?2*Jn|CuyJU_}TIUSRJ&22~9ME0?&tNlk{;L&7Xj3#g4>l|vc?#fM^VY(?C`bFKLCqph<;VKmS zTvYnC0LbH-Uxs_8_k}(i=(~t}E_8R=7>i}FG&%?+lFM)OORU-mCi*lMQ7 zA1HRL>NLEaE_x7>vdGO4AC2pVZkZ)4x~G2lm~_z!=U5+$={rG-W7_4N!8_RkqOCZ$sspiJ2u$anCCIK_$eLT!#?lhn=p2O*sN(weVNnLB7JR-nt+1~yFb5&`dDe1p8SvEL)YLq8~E>@8G|TfcuGk85!}QW&!+=~>)NohHDN z=F{K_z~Em>od67`=$TuhXD$Po3!Z=%;^>*{u7i3?7vAv&82l{>3})g{NY!aHvv9el zAqhK<5eTjQdmBA20W|L4t>c3@+;dST>S_AvX?U~VI_|s$W8X*7udD6cqY=#y^jO6@ z>0`-on^$nn8anE6_4PPBPN*HP{iEylVebq$Or*3CtmTR;ar!?75cg6Y7 zTEEi%iE4fSCzk|f*R&Axr5MbYV&oE({W(^DlX;TrYP%acI5W4%Z<6X{yIsG%PMr|j z=?VmJ77KKN-y`JWadEB1Jg>)ngK)Az!6{lc36}RSByv7~)ARYz0dAd+a?~9?>IXgQ z38Jus7l*!-YnHP$86jr?eSI9}>*ICuIvO2^?5&1Mj$Nr|;a!APvloRVyx{Nw;@Gt= zLdbY6pk0uN*D{~s0FO||0o$3RzJX3F6KOcl3CI|yjR3ZjDeMik>jdRf$&`k{fi~Sl zcaw!{V|UXW_c8ceyB#}R-$OTZ9iiusINFBmBlw@ge-CKq@aM6AFybQdkHJ5Mir!HB zHkyi@a!Z_sx!_e?^Max_7c^|q+h3wr-^6nBJzD#wwwzk@Cb}W#OZ4DPwJDx;@rzf3 zyn6mFT6i!zjhu@Wx1xO0F?|xlp9Yi=k9qAGkQtRz2)V>3X>GjP!Npe3!rKV>JPrG* zTXZuX%Z%#%Sc;i5QNYrrC)Yw%58y8xqw%!{>u*4|7JLVvu*cn3QXn+Lihu1+N_iU{!=S zQ6-KCARp_>xFT=q8npdg#B*l0AfD^s1Byt3Yk!{-k}wvH1}CF54YAFaOWGsW!L$ug zc)aOMlImJ#0n17eU!vj)vb#=?lVE+r$p0;MsteZ}TLR|g$GEQesjz6uehckvx*o-= z*{p+Cv%66dqWD`AQ&p!L?Vy#{j+`%$_f)lB6Mwx7H4$0|g}%7vd{<*yxY#)GpxCLZ zPmNzd;(4dz1zJ2+^>+M!wVi)l71j3l=L~1&fT3ZcqM~AAqLQJKqM~9_QK=WpZd887B>>*L<`+T22 z9$t>0z1CiPt+jvum>;KjwXSvbR#`+5;+0#CTSrYoO!l-^?}q&w2=~;}c8Ue*#`%-W zh?d4q+j1E`SY zBwZcvxO$f3>h;9SwlL4h&Jkq0W=?K;%bD{wo`ng1Sl7~f@>1M=8;j|E;?vuBer>mS z;C4=)Ys7Q6vtoElymLE4)a9ag29FOed`Q<4#0(h>C0HPqW*8#}J?fZW`KfY4b^u?Z z1J&mn?scLiyY@lJKJ+rFZgbc-bW4?QN82B|>B^H#m1wi){o6Rd_jyRmB9L9+R({#a z7&&xWH`eupW$%$CMTvahF82MKeeRX8y9zIiu$&3IiyaUn?l6Y;xu~01(5GVl9mYTV zUn9$u>gVRutMak62n;_UUb(}#aZtLOMs|1+gnQsKTyxTkq@_e%r6h@n~Bx7a~cC`$^N z-zPp+8f2>(4__8_?adqZ3vqcC57*u!c4ry=rfww0HIN-5xRnOn2F9R4J{%+!Z-d$_b}nFCbp^ zl>NJvORL-2X_6D^y(V)(4s^Wl9a6Y2OU$_67^kxpTXMfK(`@9M1$*8V%QB492fc+> z*|T0kjYQe!YlwHoyBD2k$Q zN*sQ`xMWb{9h^D8#|sNcoWje4@^J-OAVp&FgUs{v{|D&`dE)5@jT`wiZQqBu$9M$} z-73aB#G~tXJHG7}H#}sF9Ce#RzFT)}_~c0>TcdB?yzfHDb+*|45ED>1F3S3n+sM%* z>k7XllTtu#-c7j0;hzp_JaHvU!I!}?jcnB;ccN;(bcgEM0o_!e(oOZcZmR$3@Xa1n zSBe!m#+);@B0hj?giWBS>VBn+i@hn~>8FNS|H(#^{`c4y?0BUlorSLt-^QZeIU zMb|R07$nB5HZC%vB`N+bg9mPw!J&^DvxM)XMu3smMgPNyv4b~1 zYFuI*NYi=9{CyeBvx6fZBN$B(H8R+ElML>Dj0V{*{&>uoPO;^wZ<8JCn8v}lxLU_tfX99%eSxPUN*1d9}?_qw(e48Vg#)H(H*k(#}A=D6tnY< zfm53Z%3k~tzkITBr#iBg1K>`F&uZ%DvQ$-DvX;7PtW>PdC%3grWNv?w!E`$~dmX`G zf^NP@L$LY=89cO(yge(XK5lGf@3#MO@-_eisYKd&DBgn`jXSry24ZiGv(*M|$W35f* zLAJP3@kIe6^**uSNi6eYWKS9vKYe3UR|?m9s5Rp5_0+{fV)J^QLTj%T(@b-0-(e_@ zUEHmxg=+)P3tTO(+JK@?ad3k%MU-qX!gvkLX7Pod4K&o#ZAyRZL-9tDFmN zMde=?l2(tX6_X2$nTyAekM8-u0Q!Otd(QuL#L4{68>js;9GR~CUj)A^|5^X)DgWy> z8Aqr7@xk%ECy-?BBt9z>!}FCf@9wW9p6PMlVN}ar$OGa(*CyF5{3+u~ee8$g>J8lD z{Xo24M7A@Fj4<8b;gv|KtC0cQsD>FU1`0mz$_-Ee!e|n>11&{l%DP8JwaBMvKd3(3jxc@&}$ZZtXK@ z%6n=G8vE|Csi1Md>qON$`@Kz^keK*6Yh&YA|x*3kJ*>`_T1>5^Rx{7%1uU`SBO*TMiy6j9gZGzN4{xtD zzVdNBC{|T5A#sLfPe`&$gv6`k8-q2~Cit7)?))WUj_M+EXplpk941OdM-?lg@5GsJ z8R718=AJDXU++L-i|G9}5;nt@;E{#5k%*BJufK)FEn?mdTrILW zw#YoOeTOmH2(~#-zKz-+#cn|V@-4A!mvN4Wt2W~GQ{NWfd}s_F;ERjC@$cHN;RLf> zXkPhx)8@BCpIYN;5%vy(pTDI9>)tw9@aDI~ueA(04euBWjrj<4i0$uC!YS_>3;9;_ z>+dqi#fbgy8dHqoXjzsc-eZ~y6X(7MCr)z8?~@%0BxXajbL0UsI@b-x{| z6mmX9;|0zAFtQWm&jcqPdNgS;@*=V6SSZh3FtRTvyVC7iAyA zPth5V@x>3p{(_($H`b|B;d67tDrCJ{_uBo$jg<-+g49Zj?-t#p74US|X94 zTikubm@e|_i~!SL(szkrj~X*Y6AYtlq7>+;GyY*D*}(<7Df0rcd^byjAjz@y+Y1J- z*e|)o6S}x|TVE^|d`w%9h8tA=?~jd3`f=p2b3g9C_9~^Y-~qd_gviEnKL-Kj9s7-c zcwASAc?XT@V-~)`6DzFGGOO5}(k1kO{2%>8@_)PqzFc?(uz7ln@Cvd0pfPLIq6+mS zyL=2?PQKLxj!h`XmT$X{G73fgYGlbq^()1BjacxTF;ed=7t30Bh~iwa`ZwdN3039C zPdVSBy!&V`h_|27fiHdgogb-UcB~aIH5ltVMD6yv!$FPM>$e@0vbq`lxyoh0R7FE02AD7_Ye^#gl&;8}#d5 z7FQoKPS<^27XSLMu|=P#Xgbw|R-$=D^1>FP*T1Anbie3(n6<~3V(DQ9nVI7C!^W(> zQ?Pjo<<^UBqaQ=uWukYRS~0fa`T#Vx8Do1zAtjH~{9YCV40CM%anO;y)N)J?fLRQL z2gL3+V^Qy1U*)jeoAANQN-ATaxbz64SCovA&HN&x(IbPqWiZbUj%X(sYX@(Z!4^{r z>}aPHo5lWi<9ws|7-x^Tv;$6*&Dq#te4+=uByQ{EoS@fB>^?bn57@C`zg*|YlLmis z6(-*AWW@iE_^H#Fe)_?(&R+^>&jsu^x}@ZJ#3`g6&lU8NIPa)&1>zfz(nG3^p6Z+S zyUq35n!C*>sP&;Pb0kZ@*)DU4Yg74EF7s4ZG(Ylw+*V@|R*%*8%KZb0m$e-WzpJ)e zT&nO?ZQmhY*UfG8!lgc_|F2l>V=iKnJmh2kgO82OcAK;Mu0=`r>f?hBZgbL5w`9k! zY|!HG-{18TsI0$a?}q(6HsUtN`3XcMD@F7-%yIo6ge*PkvKQFLYV=aWyq6D$eSrj@ zcNpO@C-L#bsiryZwAskFbhwV~A#`ztVcx~v1Y3BiEv(nSpq9aHFK{^4-c4Gp_L#To zkuQkxre_u&?@50@H;*`F}vH_9yOMvD4oiICLW^H)LkpB2_O(lgv}pAIjiy`zj7EL~Xqh zBC=04OZd^3vjfaoycD}U0Ea2Y0CS4IahtenxH(<~^)k*}5m%lk+=zPr0--ffl_msDJrj zHT6_SuImtCyexvhwl(+d|KT~+Q~Sa1>ZuV2WkzloXkH`-{ek8z_cut1f=xz}NC+|u zrmlzV-UwdD$T6kw?qBXGl^N<%n#T0w7H1AJ|2wpV=u;Nl$5WkRf3Fdon+34L$$g+f z-tuNUKiHh5_kLd7GuWIs)ejBb8_pQ$F^=`F4RFIxD*Ig(3J9dPIW~&VvSOaALEr`yBx8aAO8{yaKy5L5$mPIo^iy&Y_Wa8=AB~} z;h*&R9-?GdkSpzV`;Xe^k2ycM?A=j;TwRNmLlK|sh+p1KJk1er;(dR)u_>{|#|&er zTr1`cGtbv^OT@Av<{7=i9s4mzavC#?7C*Q|n8VG!7#cvLP!6C^Hgx7leBw>wB_qwra*i6w zP_I>S8c+SY_(iM3Q?fcE&>EC^Zd4!*&+Bw?1NPl*V=p02( z;=?GuO7ZV7^DMs{v`CLviS1-y)aK2{ls0_zKPc_@@)*2W}RF&oamRH5Mz^_lpH*Q8zBgt_qL&^luak zD!gBL;aO(5OV^9Vt_XVO6485tIi>Gn(#y4)FDp6^Yc(FRn!plZu2?z2ymIKji2c{I zsxrD-ct(RN%0$sI!5rcj;rKH_jF@Ql8yoq_v98rMqw?gl-O!J(Msf8-^KqVMJ3Nu8 z^;c-EmK!63m~1Z6{ht+ECY!_9 zg1X7qG9K)l z%A%NWN=s&p7%|Np&N~;gr%@%t9bZDk;%VmS+5H?c&~Z(3T+8_I|L$5fRp&2uPBZV< z>z@`gqv*)l)9J{+itW>J?JY4V8rNPH7ewR5DsgwTdF{{@PpdhoIc>xKSH4!yDavh- zY+ihfZw8Wgh^aHo;rhxVRhE~NLYCzfV#N#`p68JBL0Oj5zENeFRP+Df@J(XjOopG+ zo)*hynpaSZw!?fic@_>gi)&`##(QGjEXuN6bj+eG_lQ9;Fw4Y(7|N2L6pt~7oc36e zaxD*(P43;V#j7-#c(@6p< zyEs6Eq^oXaC#G)QgSnh28bdUI|NZ;tG{gXnmflp$Rv4=!IG zZ=T{}yLR^iW|$@AI~H(;;W{jKU(BlZdokt`>c37bm+-pSafvyuZ_^7dErLFq%!zI# z!*5l2$0er6#ZX~fYR;Olm@LTw#|U`*M|a5MKdyAL_%)@HxJ^yInIx6nUhPJfU&^^g zw0P%I_O6qK>z}mAg<{Y@&EfqUpL5wyh)7dXJ`S&WLgb(3WqxkdCUTB5PF$13=|rd4 zN4gQgaD$v1<-R1AcR9Nf%e$VfV$fw&aE(}V8OGicyDu{bp4qTojVymXy+(z|^UL@W zl~HN=ugr@62^>*mi!})-;0cZdbKsyt6vS=qN!WEcV`#isemO@r7a%1!eDXmJc~jvA z@y_KOuS^h!E;lEQIFr~=POw5J9RIA$MNXCRK#V)>WwE9YOM_Cbd>N+U0Gq#%I~Yshd=V9VuO?(cod68s#*veBX-kfh4jK$S2hbHYq2ib6weOrJ%cZesWnVd&nio%C0RdZr~H* z!E4QnIgR`JTDoMg7?VsH)`_c<&HMRU%YG<5?FsRGh&eDA)0G<-ekg+y$3zq10y&(%7-hcLW=JfspiB%nX9hqPE;}mGV{cxRm ziEF3Wf1P>OnSO9&I|w9mUCUhA!UEQ-metj&P_41s{QiUQ`|9G-@OJc-#d1N zaLZd;WuG4}6JwT`H;#JZFVQvo-SI2G6DNquqP4&E!AfCR*D0V#Q6gv?F5sO|-NPVrm*K?TLJKZt)5!Q}T{A zHQCH$rK_g4F^z6FU+haWZ{k7M1vi`1&%T5Ns!gd$;#O$cYlecFUBdTM@(=I@9#3epEHEu8rJZ4Q!wYxWx?SH>S_Lg^}hE4^~qkqlGeh zz1VpRd+dR>qAdHND)}snp=C8h!;^juMzl58rA6_z*su>c`d}W37K3gzCk^0pz(0G4 zPIRJW)PZHgqjjDz(hov9aQj)}%((PhNF3UppU{_4xz6->`TUox(7QNGfsp8CZ z_OW>+l$pApgc9YA`;bSJ0_VnkO}ZJ>|1L*P#@9UD75_)NdFQ+K>3rxyn!L*~E&ExjczwA!u=nzAES5&F2BmgmT|u~OTpA>vUTzLI zWCp(yXWwQH@BN9Cq{GM;@dCu`+suA^VrMxq9Okc)@S1o@!izi>4Qv&ENO(&0za4l& zoP9g%okzrCN!>42O0dM!5^fjo+-^=;a2@*Pj|55I&7?;fK3${i$$am2yd3J(N4OlA zxfw1GdbL724V_2I^(S7A{_m6a7cnmblMjm(8Rn!x&!a&~z6RRgh#)M-?fb?189Ydm z@sLXkVI1YR7&FWvqfS4;m(|^TS>^chg&0A~-qJN`awQ_qimU#O$qU7*e`9h9G1BDi zV0V*q#25d@WXglbnf!+I-LpTho5>3tlWUYo>47vk84=+ zNhjDmDt@{Hn+XpbXY=tBZ2EPxX*f0)D4Ws+X|p4*^Oxab#hqmHE%Dr)Wb-=`$!z`x zcF*Q(;_#g;`Qox2lay{(m!XqnGI&Oa1rkP!x_vJ6C%%wn0VI22_X~Co_03>CYH~tGWYksCdh2F zHv96Od#%6A-Tnb4mN`b$2;NHDXc-Aa6RDw6*ejeH;bLSm`(Bt)~R3y!BVm6BXln$ zm?O3mv?2(mxKHvp*%cmZdmKP~T=#gH;~;mGD?HSWZ=USZ!iX>Bix@|bx=xMZ(-iHl z&?5HnI+B|I{}9*g({`GrW%ZH?eG}ZtS~4m2ifii3eq(BU+Wv}4bf@4W-+}3YS16vW zW03HQ*Ciw=h*8WCMQJwZ4g6w49S3Grx_Cokp+cE-H(QVt1@Q`^6rh1PQMub3DwcoD znM|FS_c4vJM6CYU9B0Hvy7+ZU88ib4&UK03KQ_mjjgwqjuuGi&i8|aD$q_1be#c>}v~&y2vaicG#2xL53b89FmiSDu<1@3I-TuEnH=h_5 z)-EMW?CJ_i(6nrqyVRxSyJT1JZx<8m&5Qjq$1ANgn0oV)ULg*-@QAqO3v*hpy=SWE zfFoi&v|qkM*NUI&&FOv%9WqjCx!T}M7537zu?T5I- zwP>n1_^?>}6*n>CzcT%KCibeYH~{0PMZaPU%V-s2zct66Gq)A@H|usrd!@MxTs{>p zR!5emt&pXtg?Eonap$>wN{@^8Zxu`Saz|y4n6MY^1qzZC@FVpw^_D-mZ|WI_%ne`L zG8+Ls`A@M6t{$sm^-za)|0&)W@0omd?H_pdybqp@as_9)^L4Gz<)$YzxfmTPb$6@o zvsZU#^FegYQohPp7oPq`-jMpk&YT|jhv@uI{ zGZYCdUC<=()tFs_0^ufI<`Co)e5U8M4T+>K$h8qd| zDyf7b1=$Kx6~rruRKODiQnFp_me8P}T0yab90mL^trX!fAJC(Iwez9}|0>>)dDVVZ zd2BqW@>nBA{D3qg3!vvZT)s>rxe1CJ?QlbEuI@f49{!QyX%em<5vmn8OQ6dFdfoxM zOnFel<|ZnLu|W?#Al6f`y01dMv9O?tq;+DS)KDgNKKn&&;PEWSG7n44}Z~!}%Wlj1n#m+y<*`;{W^n7Ggck;7s;${yL%^jSx zeP~OV!GuFU6odUdlcoQD9&-MH=!DdLKM<39dA{ovbi^K|wcz(fAAg2eD)JP>;%mgO zr$9!C5vO>DyVya%<>%E7N-EX{J@h>>xVPu$Ug51uMZ~+JPan^(y(0gs=%{yuc`9`D zpNfvDwzJ>*w&?83uwDPQD#CDw_E#t!?Tf7#J~;0gu7~gdt@KN?x%xt$PQ@=ha);>E z58Y9}E8WpmwwNAVrIe<G(mA6$cc_AUDYKi(fUz#qzI4EFTP6$BD80V_q8KnItQ8h-akiphG;f^ymtq z2Yci*4zq(jvlu2_5{L};(0j|pH^Jm1rd)Iedj{*F&GW zGBwA=m)SF*9^uddil(jZ98QhY@jwGms;FF>($iiPyFxr?=y5NKKP84JTE4{+;u$TQ z>Igf{DhW(H64DeiUPz`M@q*}cI$j3wgcvA$#_0%=@^loiAUfT1)_{!da;~!1FTSxM zsrJt#CvO*Dp6(f|M{O78NYB_2{#`PxhI*yDYg|6nauWV)kwBe~qyU)&C1iTB4gx7OOnja#Bmg$D=*>FlSsE z<{2kbgprV@3Fr&Ail4(g&&Ww=3^`BVB0d;H&O^484;$;b(B;}we#1D=NL`NOXL_D+ zw|vQ+yyl%|u-@{t=o9T3Aj@XFryu?=AMZI|P6Fdm6Zf>e;OZan^s%)>5bM2g9HOnB zMS>==^ejq|dX_+~oQ0XZBC+c%&*^%agL8{Sp9l&d!ofi9)%*VHl@dG5}gw~1N5*>V!%YtM5E~wO{4Wr^h`2J36iCWo>^up!Ss#d z`AMFcW*Fg!jiS#a+1?e(_CARM;L`~bsuUC}APJ_kA zm`pBZh?qhX3{adgEd^*TEtXn+{oN7v*TNfm;MIylQZL^c zk&q+$PN9jX*)V2d5ArcR@WSoHA|lEYDjRYXO}Fd`F@LIO^6AmL7YWF+PZ(HZ3#Z@PD~>3KqohbK#as%MIk0gH9TRQ$>p`=S6k`BcwY zMog`|9c4$bPmu8e3R=Vk)1Y`Qe41yDu@EsT3yz+?PJAG(C9D%aOv766hs=-b#Ng@h zeAkJ|(;4HM#M#qnn>G2WDHJP|T@p6iQVDuozL-CYdW|5Kj;04WsO5{9(YVgQ5sin% z@5>idRz))@uxp6+4Aj$w7&emxiNaRERBE%sg}8bK>_8!&pGEps(RT(du0cVKSUrRM zFbqh@wV8UxTJdl+-ErYs@$(Gw5>&&Mb*-(vzwg?UE1yD{iAxplvHTV*W-@-~iybr3 zM`=n(vO$ksBid$C9AOGw{wkKbn1%cGc`CnEc`6&ldA8rOL(h`st4KZ3!B{6c+>WMt zY$dIaDJ2aK);wk_lfzgHMU1W(hMUyK#9gz=U)*D2d@O@R@MEIaITVd%OX&@diicyU zE`AdWX*oH}rrD)DDn6Ud030bs%*LOfN5vWEKsJgU=P<06Dj>s9dfaO9=Q(utu+_?t zd$lrDpKGHm?m768ovW%Q&A|i*V;l_2Rk;apk~NBru}s_*k0^I>401r)BPZ8L;v?d_ zSkHJp{1I{5x#ZOM5i$8(&saHXpG)P_K!*;#S2ki?xjJsbw@U$Lyj7aBs`swwn#IEyb zaRqO3v&;#n5KeQ#k%XgF*wP3`DR;aw3uX5mwW@5@rQS*#w|LuaEcTY!WwgZ`oJ&@> zn%+tqb#LfuJL}#|8%w~c;lAl|o(o2;51Cl1a`x(WL zuyKpG@EPl{)w1%a74+<3%O6M5!BDUcj0Ve!4_gV+!Oe%Qbg%)Gjy8c=&=Fe{9R=n= zdmTC(EP}3c=z36=Y{*t69|l%Kr&$go1Ka~6K`uowkOnqEhd-z2NU$Bc01UkUsMTci zi@m|m<1lpGw!>Bwm|iO7pZA8paM+54E&$^}{}&HiiC`9(0=9$CQ8HG0*vsl*cK_%{_Tu?jk~O3^uB19Zg>Mc07Z14pgqw-l|teb@?t z4yjgj1Q-kLe)q7I3GRJQ@}Kf%)PN6IM0}tGgTY1waz8w51w9CV=V5CuSOO-43wKGm zVsAB=4xRc5j)8&ow4H~L`-PIoA>9Gwwwd0BgG#T&2>2D8b~S)Ooupqy$${AxfjXVz zVCuX9+yh<7fw`n>!H|bB?CugaOff2kw^_lD;1DPU>cJrBW`}MC1EB*#RD2K^03G4bQJ_C` zyhA5|zR+n7odLR`a~)b6fdiUU5ULc0gQ3t(U?f;HO7e@n4Pzv3@%oPixApO6L`Xc% z8yRIE#Cuaf8D9)a2b;hUuySgf6$dtgGCp7$$UsyFYFWCsXu1Vsi_7bdRuRz>H@m%A z4jnf`31)**E@dXjK+*!rfhBB~q6;OWxJe?0!eYP@mp4Zu^3Ais&APY!97QM3QB~Dq z#lfJcnz( zl7($n3b^;uHY*?WzpTxw0izSztX44f@-{0h_o!tBT+wF55J*jIv(mt-tJ|zXNiS-% zD!_oGHmeS-1e?H^e&WHaP>MtJ|y$PdZB`kWS3^~RY45jL zdo2QUKWMX>!LSeM9%~suYUy@h0~iig?xc#q{9W{aF#RLy7L2c>#K7>~ZB{Pm`*E99 z1U7;dVAUsWRxMbtr_E{rGd^vzTEN`TXfuK~@;Tivn1J?0n-u{Dec5Kkf{|afSqWg( z-Zm>0tpB>r@`5ejv{`wex1r4{2J`pP7{RjdXd__Uei|j1^aG6y%>0q@AfGn$GmR50 z_=Ro_Rve&Pf_o0)Kq7(WUuk?`?Qd;X7FgU&s|BkL(Kf)nzqeUc;DP@zLW0^KG)6Gs z&o-+a4E-;SaUG7gGJb$@hv@}iQ#&OEW@|^Re6YZE#3}(3+()b?FvMdWu|gk5VXq@r zGT7jM#3};IPCa5Zf@!B6u|l38LH{FG5*QeC#3}&m1|PBN!JMH-tiS>ch8(ftLHEcb zRt{J->WEbX=7t@ye4nH@jXPq+fpO!HSlM9w1mY!HkqE431e}5Z*gExyl?7HsAF-;y z>{&;wb};swBUaP~96k4ll@12ZJ7UEY(snK-0~?Q8$yXn-!Z%Um*B`MWpTf{hM=Y&~ z>G-xI3``!cb~}zkC*K9l0F?GZg7#ijDG%q}KFrHYOLLpM{U<cLj%=v|WD;!Obawo>2tGq|6d3nB zZS21)-CnTzdHTP0L@@%ub_6P2?N;hGJoan1qD$$oecLVn?MJPYLG4yO7&4;WDtdvE z2y3^}Uc`|IYB@`=f3{l% z7J#KA{v=gH6!ddKABb zKp~33!e^a$unbz;(r(p)>08^aMzH<`72ghe-^9@}G6Ggtwp-a%N3EzgC<(CO9VJ%* zM(=?C9u6!dkoZx%75WyQe~!m*Q+MCCTg_nJj}&<|>ww?dt*Uoq|8BQR-lYVz4sufJ zP0=M5dUL=+mSFi{5m;pNi@h~AmU^oKI;?#7^`K1G0Omor2Uv>HZbuY*D?_2T1$ZMS zNF3k|is`U25KITNz(!CSm^-_}ss`iE>9F>K(Q`Vi7BDKd!}4d17k+Ms6$%!Bv7r0B z4l5Z<2eZINun3%MosS{{Wnd#164zn5Spyb;($gZ)A3Ep)MTgi}>}>@lf8m84RuEVW zhJx;kI;;pV0hBwV__-bSIwI^J9aah@cL0?8gT{CnZ+flzi}8qv#!Dzdux??8RS%Y3 z+F=E}N8SIk!-@m5F6*$oU_=5%2UdY4VBF;$Ru!0eMTfNqOiu5xqCQ~uT;5?Nf(O8K zF!#0&D+i3eot%RWU?phfWRQ?R#J@YN1K?iJ{UNRTjt(mrEV{G9iUzAPQ3y7!=&&+D zO;+8rE^nS)g`2!}61VBzcrW;j?k$kWlFRq*4tuE<3zlx{<&C(v!(LYuXG_|O^fo;z z1HRtaH7X)*Ep>*0n0#eWdz>6VM--3)Fl;?J0Gl?D12AqA834 zBtmPiffQ+`L>#REWlp`7w3VH-?l(HD7_jC|90B9sQt4~KGUz?klHTHVze5S)KpEC-M`A#!FWI3FNF=`TbGkXWx1OR0_k2NP2Wzb_Wx`_bUa(b0d_}+BMZ{j}9IW`d z!-@opzL9c;-exccIRAA{LT00p1A94s*{~~?iZ}+28mQz%rGb3#$s>ca7AZ;;m8+)QJ*sZ*AR$>p@no> z3&AK*Iut39ytwP(062~RV4Xf1=t=c(-nL3 zMs-@%&;g^Ntt~#@oUl%-4o1m1rMMLI|BQYet`dZS!O(kby42g^@DtDMwClVGlnzS_ zK`!$wMQ7MZ&Lfmu2^dX$;Dk;qPRfCH!aM?VVU&T%U@e#lwt#t{|HMwK1dIf$LHDFi zYY%t;l;c8jBvk^Pd^R-WL!CtUX;C1%=D4Yy_9PTB4Vq1E)bviv{W&EtLpp$9%1kAY zJFC-*AR=aVrA;*iu%%L~p0 zbHEHRAB&S^i6cXCIV3eTEJvb`+}lLQwbv_;!vSY)3_w! zSja6P{kl~mjz!%n@fq))DCG(yGT=2hbo{?%|A&!BKnf(^ zp%MmU(!WU<3QB&SMC9rnI&Oucb0iX-cG)X2$IMKqH-NbUGwgeT@ncr zX#=@WD1J(TGMKxb5<^e)1}RtSjRDi357;zEuZ4>552nM9+$iZSmN&r;lzJC}xkUJH zQi8z}aiHockg>n{X^Ncq%x7pDpzpJ+2f%!A4;WU=fCcUa-Cr_(Y^MK%)nGW-0!D+O zTc~OChFSrn_e325e2sD=|2U@^9=$&1jJ?W01D1f1VBBj|HP`?qf`OHtmX%5%mOv($3Fd%J zU;$Y7ItIY#HyAj;Vz3Sje3QupYzJGwh$@QwYo=K+5X=Qb!5T0UY~MkVgK2L|hc|kQ zZDgke+Ot}-!)OKL5KMkY3GxdXc4Ok#GHkhehi(94kxO{5(@FuGz)UdseM%6F|9}Mx zSoxvS(`+Ntb*<790m?=iRcleS2qy2M5rJAABj7jW01O0+K7r;Kz6y+jF8NH+HDDri z*%ykg1HI6ddlg*|7C{GnLn8&VzEzG?*vOp~P)_Hqmc!5*Xj}+p>|?$Lo4-TRw=|aT zX++=wFdR&1q!okJ;9M|bzf{af1}=oovguN<7fgh1{Q<|ov?d$^wV$v9X8epD&?+Jz zi=qOQ9tHoR=pY-5y~z%pB(daF@7`a*=Y70$n?ZU>@F7QD;ugbOFR{eOTl>4>*GSyz z_7?v~IpX`L;)mH-Y?8+C?}o6oh%~V-lR6gPn3wk;3Evl zd^V1oag8I z$oLX(0Vr?Hgu0LQFPEk2X2W8#oN+bgnHceH6&B(?3E4{g(Kl*)pOL?l)#!?%v zl6CIx<2V2YB3KEAfc2nkbS+>M7;vgmP!+(K0A16URSj5o8b@_teLt!JYzS0xG2+bY zJ;Tq-aT!|CEvDA8M?O%e{xVjWT2Y$)!i6To8*f%&FX0Je6@}@wmT$XI$D|K4o=-XRHyjnb(QM z(i=QCj*8gGYe&5L+sJEb!P|LRXfdxDJ?PRhKrdIuN*53Ab|5-5^GV)E;S&t;$?D1F zF7@FgPY^4Yct-xEZSTDp!0c@?j zw%w&Q3o9vN@&8`*xf?xmEcv|!f3AW8msWkFORMGD!xeu&zJq)3N@ zP}IsL-)Zx5<&hvfhu3*|v$K*{GLyJM#Ku(5`IbMrYhOi#TzCJ=c@f{a{y*nu(cfk0 z|2;nxRQJDjoUeNEv724}M8i@~?qdyp9+9@p6JVy6@v>Uk@evU>d0O=XUoke#Gk$cI zd91x>(ek_6{t00*Yl&yfqT(mrS}IrQ^E^(}?JsD(TiXl&#J|{o^4_R?z3ha)v<+^} zpDUd>H(eq!!>#2fyTxzUdqxZjfw_k()`?68Q@MN}+wC`SYT31f7IU4TGBn>!EuYM< zf5NTBzwf4zufEwc+=?T4bPvh%*O8p-M74YW<)+V^%+I^ctzKB9BGUhgIL2?{w^Ady zPBdJV=KoNW^u7`-)tK3><5Bxw9l=i@nM!vBJeirMms)vlEsELEb_{6xCWiSk94yS0iQo5ke9%CaO27Rz3_{Aa3~D^!XD&9*P>_5UwV$!f7WGq)Ptf1 z_}M)uYG>f8?15hozqto~F8t8czYME-ly73B5|MCH1P@5V&*_1$!LRCpU%|lD(gQya ze%R6z4fFIo{6wpVh%h2@d*C-PKvnm^&xhaI13w*p__C7?hr>^D_{Ykh0%>G~%IhIP z0sNXC_!;oqd*DaFkGSb%!%YlO$;b1R{X!!0kB_kHCjowK5Bvc5TH475Y8ap*d*FNF zr}V&&y4rGU1wBMGGji4Sz%PdHzWHRsN${h3;0M7^?SWs%KvXFC$CW>ME+Jx14+)at z``&W0;TZVQJ@8u@h|+rC?}1;`jsKVZ93twwML7LKOM&ly>&b>g;K%g9Z)bo??}1+r zzxZUnrR5T__v8pI5`IAX$%YRwa>e$*uYsS@1K$h3qz8T?{DySu|HKh6kchzLC-W;9 z(c*gGr@_zcfj<|1X%Boi{KhW+1zqI~Rx;8B^{|90UC*q@RXJB~*^d3?JxBK|QH#&g z*SeOp*INw*$a57TpBCw(weI3)azEo2X@>h~#X;yX=q2y*W|FUu7Vh%VS_b-PsR2G( z$zK8<0SSH?n>;7Y|${4*h)r|n=2P3`CO%3Wn5i}D+tTPtrGFVNvzGijx8eD ztsep(?E0%7XK2--=tMr4>i{{61-o(*iLA^?Fj(E!xK4AjVk?XtWN3-~5bmZheGI~* z4J`~sF@#=dxu6lf%iS zuff}su1Y_Ua906_5w3@yLwR)n3!Y(Ud#7P;Jhig`dGuyY#h%hL(yqq8QF?I`4`O2Z)3Bc<$7j zT;)sd_1vag3kNfpw|ca)JAAa17LO)3p?m6lv=G7(e|j|Ue?3~wA=Ph7>BI7`4tZHH z%}vMpbL5R`2yF24)tY}({G?_l-H!_6(bLdI+CMy6&}JVk|Gyp{9;5_9e)eeTy?iyV zW5~9`e-Vy>p#ONZCX8kwlY&D@(7vRJaQSMb(2?+SG3Eu+sd#yKlJL7n%Y{xl=+V+V zYGYqRrUEeDifk#4*zfyFV>J-oi&)%|qKJ>fXx;PtJ~gFKjNv*i zU#XBmR{m9>IA6*gC3lAzcwG!9r1AfPfgZVrUy;SBr1z;@{-RIu)#5F@k0EEx&SaNM zj%)BPmm*B*^k`M^i=C#NgwlKzrAZ|?RzZ9cMcWL&l#**%&5S|uYZ$HP3PE=oPE`@s z(Chn?N3&1&;K{#y(pVKJ3&Vj{h#-{KO=G=;k>+w;3xgLzqHGcr6DP<2dK^k2m%b>k z;R-+|2crp;hHScVI8=|ZDAFbI{W19$1ZLo575ogGX+~EFr4jQ7^R3|Gj^;cx;N zL%Qq(@FuGE;60sHM*2NWm_(-5_-Gk;)PB|CSg`wF%Pl@yJynxHDKwqKZi8^- zgFadiRng!$8jrCm^w@v0)W)*>p;R(t10}8=UOr9+$X?R5$}1*!Aw&U@RL43-P>(9JFGnfhsB_?4{Tvkg0R(R2uaXC;!qeQC+f$QYwWPfsN!VeYAFl zO_c}@134=Dly Y#vbA(iJKq6HP3?{?PGCsrl;Tk0ZcIwzyJUM diff --git a/ni-libraries/libRoboRIO_FRC_ChipObject.so.1 b/ni-libraries/libRoboRIO_FRC_ChipObject.so.1 old mode 100644 new mode 100755 index cf57cca526b9895a8312ed0be5324c093b9a33e5..5281f6379ba245f4dc7e06a28eb550a147698ae2 GIT binary patch literal 367752 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%0AaSnm$8%)%Pru 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 x$X^nndezPt`Nqh{2XrR>()qq%^F-4L%C{s +#else +#include +#include +#endif +#ifdef USE_THRIFT +#include "NetCommRPCComm.h" +#include +#endif +namespace nJaguarCANDriver +{ + void sendMessage_wrapper(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); + void receiveMessage_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); + int32_t receiveMessageStart_wrapper(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); +#if defined (__vxworks) + int32_t receiveMessageStart_sem_wrapper(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); +#else + int32_t receiveMessageStart_mutex_wrapper(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); +#endif + void receiveMessageComplete_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); +#ifdef USE_THRIFT + void checkEvent_CAN(std::vector< CANEvent >& events); +#endif +} + +#ifdef __cplusplus +extern "C" +{ +#endif + + void FRC_NetworkCommunication_JaguarCANDriver_sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); + void FRC_NetworkCommunication_JaguarCANDriver_receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); +#if defined (__vxworks) + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_sem(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); +#else + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_mutex(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); +#endif + void FRC_NetworkCommunication_JaguarCANDriver_receiveMessageComplete(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); + +#ifdef __cplusplus +} +#endif + +#endif // __JaguarCANDriver_h__ diff --git a/wpilibc/include/NetworkCommunication/AICalibration.h b/wpilibc/include/NetworkCommunication/AICalibration.h index 8d84864c76..b2f366c5bd 100644 --- a/wpilibc/include/NetworkCommunication/AICalibration.h +++ b/wpilibc/include/NetworkCommunication/AICalibration.h @@ -1,19 +1,19 @@ - -#ifndef __AICalibration_h__ -#define __AICalibration_h__ - -#include "HAL/HAL.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); - int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); - -#ifdef __cplusplus -} -#endif - -#endif // __AICalibration_h__ + +#ifndef __AICalibration_h__ +#define __AICalibration_h__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); + int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status); + +#ifdef __cplusplus +} +#endif + +#endif // __AICalibration_h__ diff --git a/wpilibc/include/NetworkCommunication/CANInterfacePlugin.h b/wpilibc/include/NetworkCommunication/CANInterfacePlugin.h new file mode 100644 index 0000000000..a973c31d2a --- /dev/null +++ b/wpilibc/include/NetworkCommunication/CANInterfacePlugin.h @@ -0,0 +1,61 @@ +// CANInterfacePlugin.h +// +// Defines the API for building a CAN Interface Plugin to support +// PWM-cable-free CAN motor control on FRC robots. This allows you +// to connect any CAN interface to the secure Jaguar CAN driver. +// + +#ifndef __CANInterfacePlugin_h__ +#define __CANInterfacePlugin_h__ + +#include + +#define CAN_IS_FRAME_REMOTE 0x80000000 +#define CAN_MESSAGE_ID_MASK 0x1FFFFFFF + +class CANInterfacePlugin +{ +public: + CANInterfacePlugin() {} + virtual ~CANInterfacePlugin() {} + + /** + * This entry-point of the CANInterfacePlugin is passed a message that the driver needs to send to + * a device on the CAN bus. + * + * This function may be called from multiple contexts and must therefore be reentrant. + * + * @param messageID The 29-bit CAN message ID in the lsbs. The msb can indicate a remote frame. + * @param data A pointer to a buffer containing between 0 and 8 bytes to send with the message. May be NULL if dataSize is 0. + * @param dataSize The number of bytes to send with the message. + * @return Return any error code. On success return 0. + */ + virtual int32_t sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize) = 0; + + /** + * This entry-point of the CANInterfacePlugin is passed buffers which should be populated with + * any received messages from devices on the CAN bus. + * + * This function is always called by a single task in the Jaguar driver, so it need not be reentrant. + * + * This function is expected to block for some period of time waiting for a message from the CAN bus. + * It may timeout periodically (returning non-zero to indicate no message was populated) to allow for + * shutdown and unloading of the plugin. + * + * @param messageID A reference to be populated with a received 29-bit CAN message ID in the lsbs. + * @param data A pointer to a buffer of 8 bytes to be populated with data received with the message. + * @param dataSize A reference to be populated with the size of the data received (0 - 8 bytes). + * @return This should return 0 if a message was populated, non-0 if no message was not populated. + */ + virtual int32_t receiveMessage(uint32_t &messageID, uint8_t *data, uint8_t &dataSize) = 0; +}; + +/** + * This function allows you to register a CANInterfacePlugin to provide access a CAN bus. + * + * @param interface A pointer to an object that inherits from CANInterfacePlugin and implements + * the pure virtual interface. If NULL, unregister the current plugin. + */ +void FRC_NetworkCommunication_JaguarCANDriver_registerInterface(CANInterfacePlugin* interface); + +#endif // __CANInterfacePlugin_h__ diff --git a/wpilibc/include/NetworkCommunication/FRCComm.h b/wpilibc/include/NetworkCommunication/FRCComm.h index e971fac1a5..4d40d237d4 100644 --- a/wpilibc/include/NetworkCommunication/FRCComm.h +++ b/wpilibc/include/NetworkCommunication/FRCComm.h @@ -1,193 +1,201 @@ -/************************************************************* - * NOTICE - * - * These are the only externally exposed functions to the - * NetworkCommunication library - * - * This is an implementation of FRC Spec for Comm Protocol - * Revision 4.5, June 30, 2008 - * - * Copyright (c) National Instruments 2008. All Rights Reserved. - * - *************************************************************/ - -#ifndef __FRC_COMM_H__ -#define __FRC_COMM_H__ - -#ifdef SIMULATION -#include -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#else -#if defined(__vxworks) -#include -#define EXPORT_FUNC -#else -#include -#include -#define EXPORT_FUNC -#endif -#endif - -// Commandeer some bytes at the end for advanced I/O feedback. -#define IO_CONFIG_DATA_SIZE 32 -#define SYS_STATUS_DATA_SIZE 44 -#define USER_STATUS_DATA_SIZE (984 - IO_CONFIG_DATA_SIZE - SYS_STATUS_DATA_SIZE) -#define USER_DS_LCD_DATA_SIZE 128 - -struct FRCCommonControlData{ - uint16_t packetIndex; - union { - uint8_t control; -#ifndef __vxworks - struct { - uint8_t checkVersions :1; - uint8_t test :1; - uint8_t resync : 1; - uint8_t fmsAttached:1; - uint8_t autonomous : 1; - uint8_t enabled : 1; - uint8_t notEStop : 1; - uint8_t reset : 1; - }; -#else - struct { - uint8_t reset : 1; - uint8_t notEStop : 1; - uint8_t enabled : 1; - uint8_t autonomous : 1; - uint8_t fmsAttached:1; - uint8_t resync : 1; - uint8_t test :1; - uint8_t checkVersions :1; - }; -#endif - }; - uint8_t dsDigitalIn; - uint16_t teamID; - - char dsID_Alliance; - char dsID_Position; - - union { - int8_t stick0Axes[6]; - struct { - int8_t stick0Axis1; - int8_t stick0Axis2; - int8_t stick0Axis3; - int8_t stick0Axis4; - int8_t stick0Axis5; - int8_t stick0Axis6; - }; - }; - uint16_t stick0Buttons; // Left-most 4 bits are unused - - union { - int8_t stick1Axes[6]; - struct { - int8_t stick1Axis1; - int8_t stick1Axis2; - int8_t stick1Axis3; - int8_t stick1Axis4; - int8_t stick1Axis5; - int8_t stick1Axis6; - }; - }; - uint16_t stick1Buttons; // Left-most 4 bits are unused - - union { - int8_t stick2Axes[6]; - struct { - int8_t stick2Axis1; - int8_t stick2Axis2; - int8_t stick2Axis3; - int8_t stick2Axis4; - int8_t stick2Axis5; - int8_t stick2Axis6; - }; - }; - uint16_t stick2Buttons; // Left-most 4 bits are unused - - union { - int8_t stick3Axes[6]; - struct { - int8_t stick3Axis1; - int8_t stick3Axis2; - int8_t stick3Axis3; - int8_t stick3Axis4; - int8_t stick3Axis5; - int8_t stick3Axis6; - }; - }; - uint16_t stick3Buttons; // Left-most 4 bits are unused - - //Analog inputs are 10 bit right-justified - uint16_t analog1; - uint16_t analog2; - uint16_t analog3; - uint16_t analog4; - - uint64_t cRIOChecksum; - uint32_t FPGAChecksum0; - uint32_t FPGAChecksum1; - uint32_t FPGAChecksum2; - uint32_t FPGAChecksum3; - - char versionData[8]; -}; - -#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input 17 -#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output 18 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Header 19 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra1 20 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 21 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra2 22 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 23 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Joystick 24 -#define kFRC_NetworkCommunication_DynamicType_Kinect_Custom 25 - -extern "C" { -#ifndef SIMULATION - void EXPORT_FUNC getFPGAHardwareVersion(uint16_t *fpgaVersion, uint32_t *fpgaRevision); -#endif - int EXPORT_FUNC getCommonControlData(FRCCommonControlData *data, int wait_ms); - int EXPORT_FUNC getRecentCommonControlData(FRCCommonControlData *commonData, int wait_ms); - int EXPORT_FUNC getRecentStatusData(uint8_t *batteryInt, uint8_t *batteryDec, uint8_t *dsDigitalOut, int wait_ms); - int EXPORT_FUNC getDynamicControlData(uint8_t type, char *dynamicData, int32_t maxLength, int wait_ms); - int EXPORT_FUNC setStatusData(float battery, uint8_t dsDigitalOut, uint8_t updateNumber, - const char *userDataHigh, int userDataHighLength, - const char *userDataLow, int userDataLowLength, int wait_ms); - int EXPORT_FUNC setStatusDataFloatAsInt(int battery, uint8_t dsDigitalOut, uint8_t updateNumber, - const char *userDataHigh, int userDataHighLength, - const char *userDataLow, int userDataLowLength, int wait_ms); - int EXPORT_FUNC setErrorData(const char *errors, int errorsLength, int wait_ms); - int EXPORT_FUNC setUserDsLcdData(const char *userDsLcdData, int userDsLcdDataLength, int wait_ms); - int EXPORT_FUNC overrideIOConfig(const char *ioConfig, int wait_ms); - -#ifdef SIMULATION - void EXPORT_FUNC setNewDataSem(HANDLE); -#else -# if defined (__vxworks) - void EXPORT_FUNC setNewDataSem(SEM_ID); - void EXPORT_FUNC setResyncSem(SEM_ID); -# else - void EXPORT_FUNC setNewDataSem(pthread_mutex_t *); - void EXPORT_FUNC setResyncSem(pthread_mutex_t *); -# endif - void EXPORT_FUNC signalResyncActionDone(void); -#endif - - // this uint32_t is really a LVRefNum - void EXPORT_FUNC setNewDataOccurRef(uint32_t refnum); -#ifndef SIMULATION - void EXPORT_FUNC setResyncOccurRef(uint32_t refnum); -#endif - - void EXPORT_FUNC FRC_NetworkCommunication_getVersionString(char *version); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramStarting(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramDisabled(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramAutonomous(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTeleop(void); - void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTest(void); -}; - -#endif +/************************************************************* + * NOTICE + * + * These are the only externally exposed functions to the + * NetworkCommunication library + * + * This is an implementation of FRC Spec for Comm Protocol + * Revision 4.5, June 30, 2008 + * + * Copyright (c) National Instruments 2008. All Rights Reserved. + * + *************************************************************/ + +#ifndef __FRC_COMM_H__ +#define __FRC_COMM_H__ + +#ifdef SIMULATION +#include +#ifdef USE_THRIFT +#define EXPORT_FUNC +#else +#define EXPORT_FUNC __declspec(dllexport) __cdecl +#endif +#else +#if defined(__vxworks) +#include +#define EXPORT_FUNC +#else +#include +#include +#define EXPORT_FUNC +#endif +#endif + +// Commandeer some bytes at the end for advanced I/O feedback. +#define IO_CONFIG_DATA_SIZE 32 +#define SYS_STATUS_DATA_SIZE 44 +#define USER_STATUS_DATA_SIZE (984 - IO_CONFIG_DATA_SIZE - SYS_STATUS_DATA_SIZE) +#define USER_DS_LCD_DATA_SIZE 128 + +struct FRCCommonControlData{ + uint16_t packetIndex; + union { + uint8_t control; +#ifndef __vxworks + struct { + uint8_t checkVersions :1; + uint8_t test :1; + uint8_t resync : 1; + uint8_t fmsAttached:1; + uint8_t autonomous : 1; + uint8_t enabled : 1; + uint8_t notEStop : 1; + uint8_t reset : 1; + }; +#else + struct { + uint8_t reset : 1; + uint8_t notEStop : 1; + uint8_t enabled : 1; + uint8_t autonomous : 1; + uint8_t fmsAttached:1; + uint8_t resync : 1; + uint8_t test :1; + uint8_t checkVersions :1; + }; +#endif + }; + uint8_t dsDigitalIn; + uint16_t teamID; + + char dsID_Alliance; + char dsID_Position; + + union { + int8_t stick0Axes[6]; + struct { + int8_t stick0Axis1; + int8_t stick0Axis2; + int8_t stick0Axis3; + int8_t stick0Axis4; + int8_t stick0Axis5; + int8_t stick0Axis6; + }; + }; + uint16_t stick0Buttons; // Left-most 4 bits are unused + + union { + int8_t stick1Axes[6]; + struct { + int8_t stick1Axis1; + int8_t stick1Axis2; + int8_t stick1Axis3; + int8_t stick1Axis4; + int8_t stick1Axis5; + int8_t stick1Axis6; + }; + }; + uint16_t stick1Buttons; // Left-most 4 bits are unused + + union { + int8_t stick2Axes[6]; + struct { + int8_t stick2Axis1; + int8_t stick2Axis2; + int8_t stick2Axis3; + int8_t stick2Axis4; + int8_t stick2Axis5; + int8_t stick2Axis6; + }; + }; + uint16_t stick2Buttons; // Left-most 4 bits are unused + + union { + int8_t stick3Axes[6]; + struct { + int8_t stick3Axis1; + int8_t stick3Axis2; + int8_t stick3Axis3; + int8_t stick3Axis4; + int8_t stick3Axis5; + int8_t stick3Axis6; + }; + }; + uint16_t stick3Buttons; // Left-most 4 bits are unused + + //Analog inputs are 10 bit right-justified + uint16_t analog1; + uint16_t analog2; + uint16_t analog3; + uint16_t analog4; + + uint64_t cRIOChecksum; + uint32_t FPGAChecksum0; + uint32_t FPGAChecksum1; + uint32_t FPGAChecksum2; + uint32_t FPGAChecksum3; + + char versionData[8]; +}; + +#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input 17 +#define kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output 18 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Header 19 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra1 20 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 21 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Extra2 22 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 23 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Joystick 24 +#define kFRC_NetworkCommunication_DynamicType_Kinect_Custom 25 + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef SIMULATION + void EXPORT_FUNC getFPGAHardwareVersion(uint16_t *fpgaVersion, uint32_t *fpgaRevision); +#endif + int EXPORT_FUNC getCommonControlData(struct FRCCommonControlData *data, int wait_ms); + int EXPORT_FUNC getRecentCommonControlData(struct FRCCommonControlData *commonData, int wait_ms); + int EXPORT_FUNC getRecentStatusData(uint8_t *batteryInt, uint8_t *batteryDec, uint8_t *dsDigitalOut, int wait_ms); + int EXPORT_FUNC getDynamicControlData(uint8_t type, char *dynamicData, int32_t maxLength, int wait_ms); + int EXPORT_FUNC setStatusData(float battery, uint8_t dsDigitalOut, uint8_t updateNumber, + const char *userDataHigh, int userDataHighLength, + const char *userDataLow, int userDataLowLength, int wait_ms); + int EXPORT_FUNC setStatusDataFloatAsInt(int battery, uint8_t dsDigitalOut, uint8_t updateNumber, + const char *userDataHigh, int userDataHighLength, + const char *userDataLow, int userDataLowLength, int wait_ms); + int EXPORT_FUNC setErrorData(const char *errors, int errorsLength, int wait_ms); + int EXPORT_FUNC setUserDsLcdData(const char *userDsLcdData, int userDsLcdDataLength, int wait_ms); + int EXPORT_FUNC overrideIOConfig(const char *ioConfig, int wait_ms); + +#ifdef SIMULATION + void EXPORT_FUNC setNewDataSem(HANDLE); +#else +# if defined (__vxworks) + void EXPORT_FUNC setNewDataSem(SEM_ID); + void EXPORT_FUNC setResyncSem(SEM_ID); +# else + void EXPORT_FUNC setNewDataSem(pthread_mutex_t *); + void EXPORT_FUNC setResyncSem(pthread_mutex_t *); +# endif + void EXPORT_FUNC signalResyncActionDone(void); +#endif + + // this uint32_t is really a LVRefNum + void EXPORT_FUNC setNewDataOccurRef(uint32_t refnum); +#ifndef SIMULATION + void EXPORT_FUNC setResyncOccurRef(uint32_t refnum); +#endif + + void EXPORT_FUNC FRC_NetworkCommunication_getVersionString(char *version); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramStarting(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramDisabled(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramAutonomous(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTeleop(void); + void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTest(void); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/wpilibc/include/NetworkCommunication/JaguarCANDriver.h b/wpilibc/include/NetworkCommunication/JaguarCANDriver.h new file mode 100644 index 0000000000..c7ded49749 --- /dev/null +++ b/wpilibc/include/NetworkCommunication/JaguarCANDriver.h @@ -0,0 +1,56 @@ +// JaguarCANDriver.h +// +// Defines the API for building a CAN Interface Plugin to support +// PWM-cable-free CAN motor control on FRC robots. This allows you +// to connect any CAN interface to the secure Jaguar CAN driver. +// + +#ifndef __JaguarCANDriver_h__ +#define __JaguarCANDriver_h__ + +#if defined(__vxworks) +#include +#else +#include +#include +#endif +#ifdef USE_THRIFT +#include "NetCommRPCComm.h" +#include +#endif +namespace nJaguarCANDriver +{ + void sendMessage_wrapper(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); + void receiveMessage_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); + int32_t receiveMessageStart_wrapper(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); +#if defined (__vxworks) + int32_t receiveMessageStart_sem_wrapper(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); +#else + int32_t receiveMessageStart_mutex_wrapper(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); +#endif + void receiveMessageComplete_wrapper(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); +#ifdef USE_THRIFT + void checkEvent_CAN(std::vector< CANEvent >& events); +#endif +} + +#ifdef __cplusplus +extern "C" +{ +#endif + + void FRC_NetworkCommunication_JaguarCANDriver_sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t *status); + void FRC_NetworkCommunication_JaguarCANDriver_receiveMessage(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, uint32_t timeoutMs, int32_t *status); + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart(uint32_t messageID, uint32_t occurRefNum, uint32_t timeoutMs, int32_t *status); +#if defined (__vxworks) + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_sem(uint32_t messageID, uint32_t semaphoreID, uint32_t timeoutMs, int32_t *status); +#else + int32_t FRC_NetworkCommunication_JaguarCANDriver_receiveMessageStart_mutex(uint32_t messageID, pthread_mutex_t *mutex, uint32_t timeoutMs, int32_t *status); +#endif + void FRC_NetworkCommunication_JaguarCANDriver_receiveMessageComplete(uint32_t *messageID, uint8_t *data, uint8_t *dataSize, int32_t *status); + +#ifdef __cplusplus +} +#endif + +#endif // __JaguarCANDriver_h__ diff --git a/wpilibc/include/NetworkCommunication/LoadOut.h b/wpilibc/include/NetworkCommunication/LoadOut.h index f28249e3f1..2433b0cc71 100644 --- a/wpilibc/include/NetworkCommunication/LoadOut.h +++ b/wpilibc/include/NetworkCommunication/LoadOut.h @@ -1,39 +1,52 @@ - -#ifndef __LoadOut_h__ -#define __LoadOut_h__ - -#define kMaxModuleNumber 2 -namespace nLoadOut -{ - typedef enum { - kModuleType_Unknown = 0x00, - kModuleType_Analog = 0x01, - kModuleType_Digital = 0x02, - kModuleType_Solenoid = 0x03, - } tModuleType; - bool getModulePresence(tModuleType moduleType, uint8_t moduleNumber); - typedef enum { - kTargetClass_Unknown = 0x00, - kTargetClass_FRC1 = 0x10, - kTargetClass_FRC2 = 0x20, - kTargetClass_FRC2_Analog = kTargetClass_FRC2 | kModuleType_Analog, - kTargetClass_FRC2_Digital = kTargetClass_FRC2 | kModuleType_Digital, - kTargetClass_FRC2_Solenoid = kTargetClass_FRC2 | kModuleType_Solenoid, - kTargetClass_FamilyMask = 0xF0, - kTargetClass_ModuleMask = 0x0F, - } tTargetClass; - tTargetClass getTargetClass(); -} - -#ifdef __cplusplus -extern "C" { -#endif - - uint32_t FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t moduleType, uint8_t moduleNumber); - uint32_t FRC_NetworkCommunication_nLoadOut_getTargetClass(); - -#ifdef __cplusplus -} -#endif - -#endif // __LoadOut_h__ + +#ifndef __LoadOut_h__ +#define __LoadOut_h__ + +#ifdef SIMULATION +#include +#define EXPORT_FUNC __declspec(dllexport) __cdecl +#elif defined (__vxworks) +#include +#define EXPORT_FUNC +#else +#include +#define EXPORT_FUNC +#endif + +#define kMaxModuleNumber 2 +namespace nLoadOut +{ + typedef enum { + kModuleType_Unknown = 0x00, + kModuleType_Analog = 0x01, + kModuleType_Digital = 0x02, + kModuleType_Solenoid = 0x03, + } tModuleType; + bool EXPORT_FUNC getModulePresence(tModuleType moduleType, uint8_t moduleNumber); + typedef enum { + kTargetClass_Unknown = 0x00, + kTargetClass_FRC1 = 0x10, + kTargetClass_FRC2 = 0x20, + kTargetClass_FRC3 = 0x30, + kTargetClass_RoboRIO = 0x40, + kTargetClass_FRC2_Analog = kTargetClass_FRC2 | kModuleType_Analog, + kTargetClass_FRC2_Digital = kTargetClass_FRC2 | kModuleType_Digital, + kTargetClass_FRC2_Solenoid = kTargetClass_FRC2 | kModuleType_Solenoid, + kTargetClass_FamilyMask = 0xF0, + kTargetClass_ModuleMask = 0x0F, + } tTargetClass; + tTargetClass EXPORT_FUNC getTargetClass(); +} + +#ifdef __cplusplus +extern "C" { +#endif + + uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t moduleType, uint8_t moduleNumber); + uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getTargetClass(); + +#ifdef __cplusplus +} +#endif + +#endif // __LoadOut_h__ diff --git a/wpilibc/include/NetworkCommunication/UsageReporting.h b/wpilibc/include/NetworkCommunication/UsageReporting.h index 6827c053c9..918ac5ae63 100644 --- a/wpilibc/include/NetworkCommunication/UsageReporting.h +++ b/wpilibc/include/NetworkCommunication/UsageReporting.h @@ -1,135 +1,139 @@ - -#ifndef __UsageReporting_h__ -#define __UsageReporting_h__ - -#ifdef SIMULATION -#include -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#else -#include "HAL/HAL.h" -#define EXPORT_FUNC -#endif - -#define kUsageReporting_version 1 - -namespace nUsageReporting -{ - typedef enum - { - kResourceType_Controller, - kResourceType_Module, - kResourceType_Language, - kResourceType_CANPlugin, - kResourceType_Accelerometer, - kResourceType_ADXL345, - kResourceType_AnalogChannel, - kResourceType_AnalogTrigger, - kResourceType_AnalogTriggerOutput, - kResourceType_CANJaguar, - kResourceType_Compressor, - kResourceType_Counter, - kResourceType_Dashboard, - kResourceType_DigitalInput, - kResourceType_DigitalOutput, - kResourceType_DriverStationCIO, - kResourceType_DriverStationEIO, - kResourceType_DriverStationLCD, - kResourceType_Encoder, - kResourceType_GearTooth, - kResourceType_Gyro, - kResourceType_I2C, - kResourceType_Framework, - kResourceType_Jaguar, - kResourceType_Joystick, - kResourceType_Kinect, - kResourceType_KinectStick, - kResourceType_PIDController, - kResourceType_Preferences, - kResourceType_PWM, - kResourceType_Relay, - kResourceType_RobotDrive, - kResourceType_SerialPort, - kResourceType_Servo, - kResourceType_Solenoid, - kResourceType_SPI, - kResourceType_Task, - kResourceType_Ultrasonic, - kResourceType_Victor, - kResourceType_Button, - kResourceType_Command, - kResourceType_AxisCamera, - kResourceType_PCVideoServer, - kResourceType_SmartDashboard, - kResourceType_Talon, - kResourceType_HiTechnicColorSensor, - kResourceType_HiTechnicAccel, - kResourceType_HiTechnicCompass, - kResourceType_SRF08, - } tResourceType; - - typedef enum - { - kLanguage_LabVIEW = 1, - kLanguage_CPlusPlus = 2, - kLanguage_Java = 3, - kLanguage_Python = 4, - - kCANPlugin_BlackJagBridge = 1, - kCANPlugin_2CAN = 2, - - kFramework_Iterative = 1, - kFramework_Simple = 2, - - kRobotDrive_ArcadeStandard = 1, - kRobotDrive_ArcadeButtonSpin = 2, - kRobotDrive_ArcadeRatioCurve = 3, - kRobotDrive_Tank = 4, - kRobotDrive_MecanumPolar = 5, - kRobotDrive_MecanumCartesian = 6, - - kDriverStationCIO_Analog = 1, - kDriverStationCIO_DigitalIn = 2, - kDriverStationCIO_DigitalOut = 3, - - kDriverStationEIO_Acceleration = 1, - kDriverStationEIO_AnalogIn = 2, - kDriverStationEIO_AnalogOut = 3, - kDriverStationEIO_Button = 4, - kDriverStationEIO_LED = 5, - kDriverStationEIO_DigitalIn = 6, - kDriverStationEIO_DigitalOut = 7, - kDriverStationEIO_FixedDigitalOut = 8, - kDriverStationEIO_PWM = 9, - kDriverStationEIO_Encoder = 10, - kDriverStationEIO_TouchSlider = 11, - - kADXL345_SPI = 1, - kADXL345_I2C = 2, - - kCommand_Scheduler = 1, - - kSmartDashboard_Instance = 1, - } tInstances; - - /** - * Report the usage of a resource of interest. - * - * @param resource one of the values in the tResourceType above (max value 51). - * @param instanceNumber an index that identifies the resource instance. - * @param context an optional additional context number for some cases (such as module number). Set to 0 to omit. - * @param feature a string to be included describing features in use on a specific resource. Setting the same resource more than once allows you to change the feature string. - */ - uint32_t EXPORT_FUNC report(tResourceType resource, uint8_t instanceNumber, uint8_t context = 0, const char *feature = NULL); -} - -#ifdef __cplusplus -extern "C" { -#endif - - uint32_t EXPORT_FUNC FRC_NetworkCommunication_nUsageReporting_report(uint8_t resource, uint8_t instanceNumber, uint8_t context, const char *feature); - -#ifdef __cplusplus -} -#endif - -#endif // __UsageReporting_h__ + +#ifndef __UsageReporting_h__ +#define __UsageReporting_h__ + +#ifdef SIMULATION +#include +#define EXPORT_FUNC __declspec(dllexport) __cdecl +#elif defined (__vxworks) +#include +#define EXPORT_FUNC +#else +#include +#include +#define EXPORT_FUNC +#endif + +#define kUsageReporting_version 1 + +namespace nUsageReporting +{ + typedef enum + { + kResourceType_Controller, + kResourceType_Module, + kResourceType_Language, + kResourceType_CANPlugin, + kResourceType_Accelerometer, + kResourceType_ADXL345, + kResourceType_AnalogChannel, + kResourceType_AnalogTrigger, + kResourceType_AnalogTriggerOutput, + kResourceType_CANJaguar, + kResourceType_Compressor, + kResourceType_Counter, + kResourceType_Dashboard, + kResourceType_DigitalInput, + kResourceType_DigitalOutput, + kResourceType_DriverStationCIO, + kResourceType_DriverStationEIO, + kResourceType_DriverStationLCD, + kResourceType_Encoder, + kResourceType_GearTooth, + kResourceType_Gyro, + kResourceType_I2C, + kResourceType_Framework, + kResourceType_Jaguar, + kResourceType_Joystick, + kResourceType_Kinect, + kResourceType_KinectStick, + kResourceType_PIDController, + kResourceType_Preferences, + kResourceType_PWM, + kResourceType_Relay, + kResourceType_RobotDrive, + kResourceType_SerialPort, + kResourceType_Servo, + kResourceType_Solenoid, + kResourceType_SPI, + kResourceType_Task, + kResourceType_Ultrasonic, + kResourceType_Victor, + kResourceType_Button, + kResourceType_Command, + kResourceType_AxisCamera, + kResourceType_PCVideoServer, + kResourceType_SmartDashboard, + kResourceType_Talon, + kResourceType_HiTechnicColorSensor, + kResourceType_HiTechnicAccel, + kResourceType_HiTechnicCompass, + kResourceType_SRF08, + } tResourceType; + + typedef enum + { + kLanguage_LabVIEW = 1, + kLanguage_CPlusPlus = 2, + kLanguage_Java = 3, + kLanguage_Python = 4, + + kCANPlugin_BlackJagBridge = 1, + kCANPlugin_2CAN = 2, + + kFramework_Iterative = 1, + kFramework_Simple = 2, + + kRobotDrive_ArcadeStandard = 1, + kRobotDrive_ArcadeButtonSpin = 2, + kRobotDrive_ArcadeRatioCurve = 3, + kRobotDrive_Tank = 4, + kRobotDrive_MecanumPolar = 5, + kRobotDrive_MecanumCartesian = 6, + + kDriverStationCIO_Analog = 1, + kDriverStationCIO_DigitalIn = 2, + kDriverStationCIO_DigitalOut = 3, + + kDriverStationEIO_Acceleration = 1, + kDriverStationEIO_AnalogIn = 2, + kDriverStationEIO_AnalogOut = 3, + kDriverStationEIO_Button = 4, + kDriverStationEIO_LED = 5, + kDriverStationEIO_DigitalIn = 6, + kDriverStationEIO_DigitalOut = 7, + kDriverStationEIO_FixedDigitalOut = 8, + kDriverStationEIO_PWM = 9, + kDriverStationEIO_Encoder = 10, + kDriverStationEIO_TouchSlider = 11, + + kADXL345_SPI = 1, + kADXL345_I2C = 2, + + kCommand_Scheduler = 1, + + kSmartDashboard_Instance = 1, + } tInstances; + + /** + * Report the usage of a resource of interest. + * + * @param resource one of the values in the tResourceType above (max value 51). + * @param instanceNumber an index that identifies the resource instance. + * @param context an optional additional context number for some cases (such as module number). Set to 0 to omit. + * @param feature a string to be included describing features in use on a specific resource. Setting the same resource more than once allows you to change the feature string. + */ + uint32_t EXPORT_FUNC report(tResourceType resource, uint8_t instanceNumber, uint8_t context = 0, const char *feature = NULL); +} + +#ifdef __cplusplus +extern "C" { +#endif + + uint32_t EXPORT_FUNC FRC_NetworkCommunication_nUsageReporting_report(uint8_t resource, uint8_t instanceNumber, uint8_t context, const char *feature); + +#ifdef __cplusplus +} +#endif + +#endif // __UsageReporting_h__