CARMA C++
|
Base Antenna IF CAN module device class. More...
#include <carma/antenna/common/AntennaIF.h>
Public Member Functions | |
AntennaIF (carma::canbus::nodeType node, carma::canbus::CanOutput &io, carma::monitor::StateMonitorPointEnum &state, carma::monitor::AntennaIF &ifMon, carma::monitor::Xac &xacMon) | |
Constructor. More... | |
carma::canbus::MsgBriefMap | getHalfSecMonitors () const |
Retrieve a map of this devices half second monitor points. More... | |
carma::canbus::MsgBriefMap | getSlowMonitors () const |
Return a map of this devices slow monitor points. More... | |
void | processMsg (carma::canbus::msgType mid, carma::canbus::DataVector &data, bool sim) |
Process a CAN message addressed from the AntennaIF module. More... | |
void | queryTotalPower () |
Query Total Power. More... | |
void | selectBand (unsigned short band) |
Select band Select a particular band as an input to the PAM, by setting the position of the IF switch. More... | |
void | setIFlevel (float pow) |
Set IF level. More... | |
void | setIFtotalAttenuation (float atten) |
Set IF total attenuation. More... | |
void | setInputIFattenuator (float inputAtten) |
Set input IF attenuator. More... | |
void | setOutputIFattenuator (float outputAtten) |
Set output IF attenuator. More... | |
void | setOutputPowerToPreset () |
Set output power to preset. More... | |
virtual void | simTotalPower (unsigned int nsamps) |
Internally create simulated total power vector. More... | |
carma::canbus::Message | simulateMsg (carma::canbus::msgType mid) |
Produce a simulated CAN message for a given msgType. More... | |
~AntennaIF () | |
Destructor. More... | |
![]() | |
bool | isOnline () |
Is Device ONLINE? More... | |
void | reset () |
Reset the can module via CORBA using Device::softReset() method. More... | |
virtual void | setState (deviceStateType state) |
Set the state of the device. More... | |
void | startChannelOneFastSampling (unsigned short fastItem) |
Start fast sampling on channel one with the requested data item. More... | |
void | startChannelTwoFastSampling (unsigned short fastItem) |
Start fast sampling on channel two with the requested data item. More... | |
void | stopChannelOneFastSampling () |
Stop fast sampling on channel one. More... | |
void | stopChannelTwoFastSampling () |
Stop fast sampling on channel two. More... | |
XacDevice (carma::canbus::apiType api, carma::canbus::nodeType node, carma::canbus::CanOutput &canOutput) | |
Constructor. More... | |
virtual | ~XacDevice () |
Destructor. More... | |
![]() | |
carma::canbus::Message | createDummyMsg () const |
Create a dummy CAN message. More... | |
carma::canbus::Message | createMsgToAllNodes (msgType messageId) const |
Create a CAN message addressed to all nodes of this type. More... | |
carma::canbus::Message | createMsgToHost (msgType messageId) const |
Create a CAN message addressed from this Device to the host. More... | |
carma::canbus::Message | createMsgToNode (msgType messageId) const |
Create a CAN message addressed to this device from the host. More... | |
Device (apiType api, nodeType node, CanOutput &io) | |
Device constructor. More... | |
apiType | getApi () const |
Return api code of device. More... | |
char | getApiVersion () const |
Get API Version of this Device. More... | |
boardType | getBoardType () const |
Return board type id of device. More... | |
busIdType | getBusId () const |
Return bus Id that node resides on. More... | |
virtual MsgIdInfoMap | getControls () const |
Return a map of devices controls. More... | |
keyType | getKey () const |
Create a key unique to this api and node. More... | |
double | getLastRxTime () const |
Get Last RX Time for device. More... | |
unsigned int | getNlatePackets () const |
Get number of late packets. More... | |
nodeType | getNode () const |
Return node location code of device. More... | |
serialNumberType | getSerialNumber () const |
Return serial number of device. More... | |
deviceStateType | getState () const |
Status access routine. More... | |
virtual void | processMsg (msgType messageId, std::vector< byteType > &data, bool sim)=0 |
Process a CAN message. More... | |
void | reset () |
Perform a software reset of module. More... | |
void | setBoardType (boardType bt) |
Set board type of device. More... | |
void | setBusId (busIdType busId) |
Set busId of device. More... | |
virtual void | setLastRxTime (double rxMjd) |
Set latest rx time. More... | |
void | setSerialNumber (serialNumberType sn) |
Set serial number of device. More... | |
void | startChannelOneFastSampling (unsigned short fastItem) |
Start fast sampling the specified data item on channel 1. More... | |
void | startChannelTwoFastSampling (unsigned short fastItem) |
Start fast sampling the specified data item on channel 2. More... | |
void | stopChannelOneFastSampling () |
Stop fast sampling on channel 1 This routine will stop fast sampling on channel 1 regardless of whether this node is fast sampling the channel or not! In other words the request goes out globally. More... | |
void | stopChannelTwoFastSampling () |
Stop fast sampling on channel 2 This routine will stop fast sampling on channel 2 regardless of whether this node is fast sampling the channel or not! In other words the request goes out globally. More... | |
virtual | ~Device () |
Device destructor. More... | |
Static Public Attributes | |
static const carma::canbus::msgType | IF_LEFT_POL_NODE_ID = 1 |
static const carma::canbus::msgType | IF_RIGHT_POL_NODE_ID = 2 |
![]() | |
static const carma::canbus::msgType | SYSTEM_MONITOR_PACKET_1 = 0x120 |
static const carma::canbus::msgType | SYSTEM_MONITOR_PACKET_2 = 0x121 |
static const carma::canbus::msgType | SYSTEM_MONITOR_PACKET_3 = 0x122 |
static const carma::canbus::msgType | SYSTEM_MONITOR_PACKET_4 = 0x123 |
static const carma::canbus::msgType | SYSTEM_MONITOR_PACKET_5 = 0x124 |
Protected Member Functions | |
virtual void | blankingFrameHook1 (float ifoutTotPower, float pamTemp) |
virtual void | blankingFrameHook2 (float attenSet, unsigned char pamStat, unsigned char ifSwitchStat, unsigned char laserStat, unsigned char nErrors) |
virtual void | blankingFrameHook3 (float laserOpticalPow, float laserTemp) |
virtual void | blankingFrameHook4 (float inputAttenSet, float outputAttenSet) |
virtual void | processFastChannel1Packet (carma::canbus::DataVector &data)=0 |
virtual void | processFastChannel2Packet (carma::canbus::DataVector &data)=0 |
virtual void | processFastTotalPowerPacket (carma::canbus::DataVector &data)=0 |
virtual void | processPAMStatusOnChange (carma::canbus::DataVector &data)=0 |
virtual void | processSwitchStatusOnChange (carma::canbus::DataVector &data)=0 |
virtual void | processTotalPowerResponse (carma::canbus::DataVector &data)=0 |
void | updateFrameData () |
Update device or monitor data on frame timescale... More... | |
![]() | |
virtual void | initialize () |
Initialization hook. More... | |
void | processSystemMonitorPacket (carma::canbus::msgType mid, carma::canbus::DataVector &data, carma::monitor::Xac &xac) |
Process a system monitor packet. More... | |
void | processSystemMonitorPacket1 (carma::canbus::DataVector &data, carma::monitor::Xac &xac) |
Process System Monitor Packet 1 This routine processes standard system monitor packet 1 and places the data into the input Xac reference. More... | |
void | processSystemMonitorPacket2 (carma::canbus::DataVector &data, carma::monitor::Xac &xac) |
Process System Monitor Packet 2. More... | |
void | processSystemMonitorPacket3 (carma::canbus::DataVector &data, carma::monitor::Xac &xac) |
Process System Monitor Packet 3. More... | |
void | processSystemMonitorPacket4 (carma::canbus::DataVector &data, carma::monitor::Xac &xac) |
Process System Monitor Packet 4. More... | |
void | processSystemMonitorPacket5 (carma::canbus::DataVector &data, carma::monitor::Xac &xac) |
Process System Monitor Packet 5. More... | |
carma::canbus::Message | simSystemMonitorPacket (carma::canbus::msgType mid) |
Simulate system monitor packet. More... | |
carma::canbus::Message | simSystemMonitorPacket1 () |
Simulate System Monitor Packet 1. More... | |
carma::canbus::Message | simSystemMonitorPacket2 () |
Simulate System Monitor Packet 2. More... | |
carma::canbus::Message | simSystemMonitorPacket3 () |
Simulate System Monitor Packet 3. More... | |
carma::canbus::Message | simSystemMonitorPacket4 () |
Simulate System Monitor Packet 4. More... | |
carma::canbus::Message | simSystemMonitorPacket5 () |
Simulate System Monitor Packet 5. More... | |
![]() | |
void | incrementLatePacketCount () |
Increment the late packet count by 1. More... | |
bool | isPacketLate (double window=100.0) |
Determine if the last packet sent from this device was late. More... | |
void | resetLatePacketCount () |
Reset the late packet count to 0. More... | |
void | setApiVersion (char api) |
Set API Version. More... | |
Additional Inherited Members | |
![]() | |
static keyType | createKey (apiType api, nodeType node) |
![]() | |
static bool | isSystemMonitorPacket (carma::canbus::msgType) |
Check that input message type is a system monitor packet. More... | |
![]() | |
const apiType | api_ |
CanOutput & | io_ |
Reference to CanOutput object. More... | |
const keyType | key_ |
const nodeType | node_ |
![]() | |
static const msgType | RESET = 0x0000 |
Software reset message id. More... | |
static const msgType | START_CHANNEL_1_FAST_SAMPLING = 0x0004 |
Begin channel 1 fast sampling message id. More... | |
static const msgType | START_CHANNEL_2_FAST_SAMPLING = 0x0005 |
Begin channel 2 fast sampling message id. More... | |
static const msgType | STOP_CHANNEL_1_FAST_SAMPLING = 0x0002 |
Stop channel 1 fast sampling message id. More... | |
static const msgType | STOP_CHANNEL_2_FAST_SAMPLING = 0x0003 |
Base Antenna IF CAN module device class.
All antenna types use the same physical AntennaIF CAN module, also known as, the PreAmplifier Modules (PAM). This base class handles the majority of message processing and control functionality while providing hooks for the BIMA, OVRO and SZA specific versions.
Definition at line 46 of file AntennaIF.h.
carma::antenna::common::AntennaIF::AntennaIF | ( | carma::canbus::nodeType | node, |
carma::canbus::CanOutput & | io, | ||
carma::monitor::StateMonitorPointEnum & | state, | ||
carma::monitor::AntennaIF & | ifMon, | ||
carma::monitor::Xac & | xacMon | ||
) |
Constructor.
node | Location id of this instance (node location id). |
io | Reference to CanOutput class. |
ifMon | Reference to AntennaIF monitor system class. |
xacMon | Reference to Xac monitor system class. |
carma::antenna::common::AntennaIF::~AntennaIF | ( | ) |
Destructor.
|
virtual |
Retrieve a map of this devices half second monitor points.
The monitor points returned from this routine will be simulated if the device is in the OFFLINE state.
Implements carma::canbus::Device.
|
virtual |
Return a map of this devices slow monitor points.
These monitor points will be simulated every 5 seconds if the device is in the OFFLINE state.
Reimplemented from carma::canbus::devices::XacDevice.
void carma::antenna::common::AntennaIF::processMsg | ( | carma::canbus::msgType | mid, |
carma::canbus::DataVector & | data, | ||
bool | sim | ||
) |
Process a CAN message addressed from the AntennaIF module.
This routine is responsible for processing all CAN messages addressed to this device. It is a callback routine that gets called by the carma::canbus::Master class.
mid | 10bit message id (carma::canbus::msgType). |
data | Reference to the byte vector containing the raw data. |
sim | True if message is simulated, false normally. |
void carma::antenna::common::AntennaIF::queryTotalPower | ( | ) |
Query Total Power.
Query value read from total power detector in PAM.
void carma::antenna::common::AntennaIF::selectBand | ( | unsigned short | band | ) |
Select band Select a particular band as an input to the PAM, by setting the position of the IF switch.
band | IF switch position 1,2,3 or 4. |
void carma::antenna::common::AntennaIF::setIFlevel | ( | float | pow | ) |
Set IF level.
Set the IF attenuator so that the IF total power detector returns the closest value to the input parameter. Current PAM will only be able to produce about +8dBm.
pow | Target IF total power, in mW. |
void carma::antenna::common::AntennaIF::setIFtotalAttenuation | ( | float | atten | ) |
Set IF total attenuation.
Set the IF attenuator to a nominal value.
atten | Attenuator setting, 0-63 dB in 0.5 dB steps. |
void carma::antenna::common::AntennaIF::setInputIFattenuator | ( | float | inputAtten | ) |
Set input IF attenuator.
inputAtten | Input attenuator setting, 0-31.5dB in 0.5 db steps. |
void carma::antenna::common::AntennaIF::setOutputIFattenuator | ( | float | outputAtten | ) |
Set output IF attenuator.
outputAtten | Output attenuator setting, 0-31.5 dB in 0.5 db steps. |
void carma::antenna::common::AntennaIF::setOutputPowerToPreset | ( | ) |
Set output power to preset.
Go to preset IF level. Current preset IF level is 0 dBm. Thus it is functionally equivaletn to setIFlevel command with a power level of 1.0 mW.
|
virtual |
Internally create simulated total power vector.
Default implementation is a no-op.
nsamps | Size of simulated total power vector. |
Reimplemented in carma::antenna::ovro::AntennaIF.
|
virtual |
Produce a simulated CAN message for a given msgType.
This routine creates a Message with simulated data for an input message id. The returned message is automatically placed in the CAN message queue for retrieval and processing by the Master class. It thus can be used to test the processMsg method above as well as to place real (albeit simulated) data into the monitor stream.
mid | 10 bit message id (carma::canbus::msgType). |
Implements carma::canbus::Device.
|
protectedvirtual |
Update device or monitor data on frame timescale...
This routine is called every half second for every device registered with a carma::canbus::Master derivative. The default implementation does nothing but a user should overload it to guarantee that certain monitor points are updated every half second regardless of CAN activity. A good example of this is a monitor point representing Device state (ONLINE, OFFLINE, etc). We don't want a monitor point representing this state to be persistent because we want the monitor system to invalidate it if the application quits or data is otherwise not moving through the system. Thus we need to explicitly set the monitor point every half second. There are probably many monitor points where the same mechanism is needed. See the Carma Monitor System for more info or carma::monitor.
Reimplemented from carma::canbus::Device.