|
Goby Underwater Autonomy Project
Series: 1.1, revision: 163, released on 2013-02-06 14:23:27 -0500
|
nafcon_command.xml
<?xml version="1.0" encoding="UTF8"?>
<message_set>
<message>
<name>SENSOR_DEPLOY</name>
<destination_var key="DestinationPlatformId">PLUSNET_MESSAGES</destination_var>
<trigger>publish</trigger>
<trigger_var mandatory_content="MessageType=SENSOR_DEPLOY">
PLUSNET_MESSAGES
</trigger_var>
<size>32</size>
<header>
<id>10</id>
<time>
<name>Timestamp</name>
</time>
<src_id>
<name>SourcePlatformId</name>
</src_id>
<dest_id>
<name>DestinationPlatformId</name>
</dest_id>
</header>
<layout>
<static>
<name>MessageType</name>
<value>SENSOR_DEPLOY</value>
</static>
<static>
<name>SensorCommandType</name>
<value>0</value>
</static>
<float>
<name>DeployLatitude</name>
<precision>5</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>DeployLongitude</name>
<precision>5</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>DeployDepth</name>
<max>254</max>
<min>0</min>
</int>
<int>
<name>DeployDuration</name>
<max>62</max>
<min>1</min>
</int>
<float>
<name>AbortLatitude</name>
<precision>4</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>AbortLongitude</name>
<precision>4</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>AbortDepth</name>
<max>510</max>
<min>0</min>
</int>
<int>
<name>MissionType</name>
<max>6</max>
<min>0</min>
</int>
<int>
<name>OperatingRadius</name>
<max>1022</max>
<min>0</min>
</int>
<float algorithm="angle_0_360">
<name>DCLFOVStartHeading</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float algorithm="angle_0_360">
<name>DCLFOVEndHeading</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>DCLSearchRate</name>
<max>254</max>
<min>0</min>
<precision>1</precision>
</float>
</layout>
<on_receipt>
<publish>
<publish_var>NAFCON_MESSAGES</publish_var>
<all />
</publish>
</on_receipt>
</message>
<message>
<name>SENSOR_PROSECUTE</name>
<destination_var key="DestinationPlatformId">PLUSNET_MESSAGES</destination_var>
<trigger>publish</trigger>
<trigger_var mandatory_content="MessageType=SENSOR_PROSECUTE">
PLUSNET_MESSAGES
</trigger_var>
<size>32</size>
<header>
<id>11</id>
<time>
<name>TargetTimestamp</name>
</time>
<src_id>
<name>SourcePlatformId</name>
</src_id>
<dest_id>
<name>DestinationPlatformId</name>
</dest_id>
</header>
<layout>
<static>
<name>MessageType</name>
<value>SENSOR_PROSECUTE</value>
</static>
<int>
<name>SensorCommandType</name>
<min>1</min>
<max>4</max>
</int>
<int>
<name>PlatformID</name>
<max>30</max>
<min>0</min>
</int>
<int>
<name>TrackNumber</name>
<max>254</max>
<min>0</min>
</int>
<float>
<name>TargetLatitude</name>
<precision>5</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>TargetLongitude</name>
<precision>5</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>TargetDepth</name>
<max>1022</max>
<min>0</min>
</int>
<float algorithm="angle_0_360">
<name>TargetHeading</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>TargetSpeed</name>
<max>12.6</max>
<min>0</min>
<precision>1</precision>
</float>
<int>
<name>TargetSpectralLevel1</name>
<max>126</max>
<min>0</min>
</int>
<int>
<name>TargetFrequency1</name>
<max>4094</max>
<min>0</min>
</int>
<int>
<name>TargetBandwidth1</name>
<max>20</max>
<min>0</min>
</int>
<int>
<name>TargetSpectralLevel2</name>
<max>126</max>
<min>0</min>
</int>
<int>
<name>TargetFrequency2</name>
<max>4094</max>
<min>0</min>
</int>
<int>
<name>TargetBandwidth2</name>
<max>20</max>
<min>0</min>
</int>
<int>
<name>ProsecuteDuration</name>
<max>62</max>
<min>1</min>
</int>
<float>
<name>AbortLatitude</name>
<precision>4</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>AbortLongitude</name>
<precision>4</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>AbortDepth</name>
<max>126</max>
<min>0</min>
</int>
</layout>
<on_receipt>
<publish>
<publish_var>NAFCON_MESSAGES</publish_var>
<all />
</publish>
</on_receipt>
</message>
</message_set>
nafcon_report.xml
<?xml version="1.0" encoding="UTF8" ?>
<message_set>
<message>
<name>SENSOR_STATUS</name>
<trigger>publish</trigger> <!-- package upon publish to some moos var -->
<trigger_moos_var mandatory_content="MessageType=SENSOR_STATUS">
PLUSNET_MESSAGES
</trigger_moos_var>
<size>32</size>
<header>
<id>12</id>
<time>
<name>Timestamp</name>
</time>
<src_id>
<name>SourcePlatformId</name>
</src_id>
<dest_id>
<name>DestinationPlatformId</name>
</dest_id>
</header>
<layout>
<static>
<name>MessageType</name>
<value>SENSOR_STATUS</value>
</static>
<static>
<name>SensorReportType</name>
<value>0</value>
</static>
<float>
<name>NodeLatitude</name>
<precision>5</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>NodeLongitude</name>
<precision>5</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>NodeDepth</name>
<max>1022</max>
<min>0</min>
</int>
<int>
<name>NodeCEP</name>
<max>1022</max>
<min>0</min>
</int>
<float algorithm="angle_0_360">
<name>NodeHeading</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>NodeSpeed</name>
<max>12.6</max>
<min>0</min>
<precision>1</precision>
</float>
<int>
<name>MissionState</name>
<max>6</max>
<min>0</min>
</int>
<int>
<name>MissionType</name>
<max>6</max>
<min>0</min>
</int>
<int>
<name>LastGPSTimestamp</name>
<max>2000000000</max>
<min>1000000000</min>
</int>
<int>
<name>PowerLife</name>
<max>1022</max>
<min>1</min>
</int>
<int>
<name>SensorHealth</name>
<max>14</max>
<min>0</min>
</int>
<int>
<name>RecorderState</name>
<max>1</max>
<min>0</min>
</int>
<int>
<name>RecorderLife</name>
<max>30</max>
<min>0</min>
</int>
<int>
<name>NodeSpecificInfo0</name>
<max>254</max>
<min>0</min>
</int>
<int>
<name>NodeSpecificInfo1</name>
<max>254</max>
<min>0</min>
</int>
<int>
<name>NodeSpecificInfo2</name>
<max>254</max>
<min>0</min>
</int>
<int>
<name>NodeSpecificInfo3</name>
<max>254</max>
<min>0</min>
</int>
<int>
<name>NodeSpecificInfo4</name>
<max>254</max>
<min>0</min>
</int>
<int>
<name>NodeSpecificInfo5</name>
<max>254</max>
<min>0</min>
</int>
</layout>
<on_receipt>
<publish>
<moos_var>NAFCON_MESSAGES</moos_var>
<all />
</publish>
</on_receipt>
</message>
<message>
<name>SENSOR_CONTACT</name>
<trigger>publish</trigger>
<trigger_moos_var mandatory_content="MessageType=SENSOR_CONTACT">
PLUSNET_MESSAGES
</trigger_moos_var>
<size>32</size>
<header>
<id>13</id>
<time>
<name>ContactTimestamp</name>
</time>
<src_id>
<name>SourcePlatformId</name>
</src_id>
<dest_id>
<name>DestinationPlatformId</name>
</dest_id>
</header>
<layout>
<static>
<name>MessageType</name>
<value>SENSOR_CONTACT</value>
</static>
<static>
<name>SensorReportType</name>
<value>1</value>
</static>
<float algorithm="angle_0_360">
<name>SensorHeading</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>SensorPitch</name>
<max>90</max>
<min>-90</min>
<precision>0</precision>
</float>
<float>
<name>SensorRoll</name>
<max>180</max>
<min>-180</min>
<precision>0</precision>
</float>
<float>
<name>SensorLatitude</name>
<precision>5</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>SensorLongitude</name>
<precision>5</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>SensorDepth</name>
<max>1022</max>
<min>0</min>
</int>
<int>
<name>SensorCEP</name>
<max>1022</max>
<min>0</min>
</int>
<float>
<name>ContactBearing</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>ContactBearingUncertainty</name>
<max>10</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>ContactBearingRate</name>
<max>10</max>
<min>-10</min>
<precision>1</precision>
</float>
<float>
<name>ContactBearingRateUncertainty</name>
<max>3.0</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>ContactElevation</name>
<max>90</max>
<min>-90</min>
<precision>1</precision>
</float>
<float>
<name>ContactElevationUncertainty</name>
<max>10</max>
<min>0</min>
<precision>1</precision>
</float>
<int>
<name>ContactSpectralLevel1</name>
<max>126</max>
<min>0</min>
</int>
<int>
<name>ContactFrequency1</name>
<max>4094</max>
<min>0</min>
</int>
<int>
<name>ContactBandwidth1</name>
<max>20</max>
<min>0</min>
</int>
<int>
<name>ContactSpectralLevel2</name>
<max>126</max>
<min>0</min>
</int>
<int>
<name>ContactFrequency2</name>
<max>4094</max>
<min>0</min>
</int>
<int>
<name>ContactBandwidth2</name>
<max>20</max>
<min>0</min>
</int>
</layout>
<on_receipt>
<publish>
<moos_var>NAFCON_MESSAGES</moos_var>
<all />
</publish>
</on_receipt>
</message>
<message>
<name>SENSOR_TRACK</name>
<trigger>publish</trigger>
<trigger_moos_var mandatory_content="MessageType=SENSOR_TRACK">
PLUSNET_MESSAGES
</trigger_moos_var>
<size>32</size>
<header>
<id>14</id>
<time>
<name>TrackTimestamp</name>
</time>
<src_id>
<name>SourcePlatformId</name>
</src_id>
<dest_id>
<name>DestinationPlatformId</name>
</dest_id>
</header>
<layout>
<static>
<name>MessageType</name>
<value>SENSOR_TRACK</value>
</static>
<static>
<name>SensorReportType</name>
<value>2</value>
</static>
<int>
<name>PlatformID</name>
<max>30</max>
<min>0</min>
</int>
<int>
<name>TrackNumber</name>
<max>254</max>
<min>0</min>
</int>
<float>
<name>TrackLatitude</name>
<precision>5</precision>
<max>90</max>
<min>-90</min>
</float>
<float>
<name>TrackLongitude</name>
<precision>5</precision>
<max>180</max>
<min>-180</min>
</float>
<int>
<name>TrackCEP</name>
<max>1022</max>
<min>0</min>
</int>
<int>
<name>TrackDepth</name>
<max>1022</max>
<min>0</min>
</int>
<int>
<name>TrackDepthUncertainty</name>
<max>62</max>
<min>0</min>
</int>
<float algorithm="angle_0_360">
<name>TrackHeading</name>
<max>360</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>TrackHeadingUncertainty</name>
<max>10</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>TrackSpeed</name>
<max>12.6</max>
<min>0</min>
<precision>1</precision>
</float>
<float>
<name>TrackSpeedUncertainty</name>
<max>3</max>
<min>0</min>
<precision>1</precision>
</float>
<int>
<name>DepthClassification</name>
<max>6</max>
<min>0</min>
</int>
<int>
<name>TrackClassification</name>
<max>6</max>
<min>0</min>
</int>
<int>
<name>TrackSpectralLevel1</name>
<max>126</max>
<min>0</min>
</int>
<int>
<name>TrackFrequency1</name>
<max>4094</max>
<min>0</min>
</int>
<int>
<name>TrackBandwidth1</name>
<max>20</max>
<min>0</min>
</int>
<int>
<name>TrackSpectralLevel2</name>
<max>126</max>
<min>0</min>
</int>
<int>
<name>TrackFrequency2</name>
<max>4094</max>
<min>0</min>
</int>
<int>
<name>TrackBandwidth2</name>
<max>20</max>
<min>0</min>
</int>
</layout>
<on_receipt>
<publish>
<moos_var>NAFCON_MESSAGES</moos_var>
<all />
</publish>
</on_receipt>
</message>
</message_set>
plusnet.cpp
// t. schneider tes@mit.edu 3.31.09 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This software is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this software. If not, see <http://www.gnu.org/licenses/>. // encodes/decodes the message given in the pGeneralCodec documentation // also includes the simple.xml file to show example of DCCLCodec instantiation // with multiple files // this is an example showing some of the "MOOS" related features of libdccl that can be used (if desired) in the absence of MOOS #include "goby/acomms/dccl.h" #include <exception> #include <iostream> using namespace goby; using goby::acomms::operator<<; int main() { std::cout << "loading nafcon xml files" << std::endl; acomms::DCCLCodec dccl; goby::acomms::protobuf::DCCLConfig cfg; cfg.add_message_file()->set_path(DCCL_EXAMPLES_DIR "/plusnet/nafcon_command.xml"); cfg.add_message_file()->set_path(DCCL_EXAMPLES_DIR "/plusnet/nafcon_report.xml"); dccl.set_cfg(cfg); std::cout << std::string(30, '#') << std::endl << "detailed message summary:" << std::endl << std::string(30, '#') << std::endl << dccl; std::cout << std::string(30, '#') << std::endl << "ENCODE / DECODE example:" << std::endl << std::string(30, '#') << std::endl; // initialize input contents to encoder std::map<std::string, acomms::DCCLMessageVal> in_vals; // initialize output message acomms::protobuf::ModemDataTransmission msg; in_vals["PLUSNET_MESSAGES"] = "MessageType=SENSOR_STATUS,SensorReportType=0,SourcePlatformId=1,DestinationPlatformId=3,Timestamp=1191947446.91117,NodeLatitude=47.7448,NodeLongitude=-122.845,NodeDepth=0.26,NodeCEP=0,NodeHeading=169.06,NodeSpeed=0,MissionState=2,MissionType=2,LastGPSTimestamp=1191947440,PowerLife=6,SensorHealth=0,RecorderState=1,RecorderLife=0,NodeSpecificInfo0=0,NodeSpecificInfo1=0,NodeSpecificInfo2=23,NodeSpecificInfo3=0,NodeSpecificInfo4=3,NodeSpecificInfo5=0"; std::cout << "passing values to encoder:" << std::endl << in_vals; dccl.pubsub_encode("SENSOR_STATUS", &msg, in_vals); std::cout << "received: " << msg << std::endl; std::multimap<std::string, acomms::DCCLMessageVal> out_vals; std::cout << "passed to decoder: " << msg << std::endl; dccl.pubsub_decode(msg, &out_vals); std::cout << "received values:" << std::endl << out_vals; return 0; }
1.7.6.1