You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
313 lines
12 KiB
313 lines
12 KiB
/***************************************************************************** |
|
* Copyright (c) 2008, University of Florida |
|
* All rights reserved. |
|
* |
|
* This file is part of OpenJAUS. OpenJAUS is distributed under the BSD |
|
* license. See the LICENSE file for details. |
|
* |
|
* Redistribution and use in source and binary forms, with or without |
|
* modification, are permitted provided that the following conditions |
|
* are met: |
|
* |
|
* * Redistributions of source code must retain the above copyright |
|
* notice, this list of conditions and the following disclaimer. |
|
* * Redistributions in binary form must reproduce the above |
|
* copyright notice, this list of conditions and the following |
|
* disclaimer in the documentation and/or other materials provided |
|
* with the distribution. |
|
* * Neither the name of the University of Florida nor the names of its |
|
* contributors may be used to endorse or promote products derived from |
|
* this software without specific prior written permission. |
|
* |
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
****************************************************************************/ |
|
// File Name: jausMessage.h |
|
// |
|
// Written By: Danny Kent (jaus AT dannykent DOT com), Tom Galluzzo (galluzzo AT gmail DOT com) |
|
// |
|
// Version: 3.3.0a |
|
// |
|
// Date: 08/07/08 |
|
// |
|
// Description: This file defines all the attributes of a JausMessage and all pre-defined command codes according to RA 3.2 |
|
|
|
#ifndef JAUS_MESSAGE_H |
|
#define JAUS_MESSAGE_H |
|
|
|
#include "jaus.h" |
|
|
|
#define JAUS_HEADER_SIZE_BYTES 16 |
|
|
|
#define JAUS_LOW_PRIORITY 0 |
|
#define JAUS_DEFAULT_PRIORITY 6 |
|
#define JAUS_HIGH_PRIORITY 11 |
|
|
|
#define JAUS_ACK_NAK_NOT_REQUIRED 0 |
|
#define JAUS_ACK_NAK_REQUIRED 1 |
|
#define JAUS_NEGATIVE_ACKNOWLEDGE 2 |
|
#define JAUS_ACKNOWLEDGE 3 |
|
|
|
#define JAUS_ACK JAUS_ACKNOWLEDGE |
|
#define JAUS_NAK JAUS_NEGATIVE_ACKNOWLEDGE |
|
|
|
#define JAUS_SERVICE_CONNECTION_MESSAGE 1 |
|
#define JAUS_NOT_SERVICE_CONNECTION_MESSAGE 0 |
|
|
|
#define JAUS_EXPERIMENTAL_MESSAGE 1 |
|
#define JAUS_NOT_EXPERIMENTAL_MESSAGE 0 |
|
|
|
#define JAUS_VERSION_2_0 0 |
|
#define JAUS_VERSION_2_1 0 |
|
#define JAUS_VERSION_3_0 1 |
|
#define JAUS_VERSION_3_1 1 |
|
#define JAUS_VERSION_3_2 2 |
|
#define JAUS_VERSION_3_3 2 // Not a bug, 2 is defined as 3.2 and 3.3 |
|
|
|
#define JAUS_MAX_DATA_SIZE_BYTES 4080 |
|
|
|
#define JAUS_SINGLE_DATA_PACKET 0 |
|
#define JAUS_FIRST_DATA_PACKET 1 |
|
#define JAUS_NORMAL_DATA_PACKET 2 |
|
#define JAUS_RETRANSMITTED_DATA_PACKET 4 |
|
#define JAUS_LAST_DATA_PACKET 8 |
|
|
|
#define JAUS_MAX_SEQUENCE_NUMBER 65535 |
|
|
|
// Jaus Command Class Messages |
|
#define JAUS_SET_COMPONENT_AUTHORITY 0x0001 |
|
#define JAUS_SHUTDOWN 0x0002 |
|
#define JAUS_STANDBY 0x0003 |
|
#define JAUS_RESUME 0x0004 |
|
#define JAUS_RESET 0x0005 |
|
#define JAUS_SET_EMERGENCY 0x0006 |
|
#define JAUS_CLEAR_EMERGENCY 0x0007 |
|
#define JAUS_CREATE_SERVICE_CONNECTION 0x0008 |
|
#define JAUS_CONFIRM_SERVICE_CONNECTION 0x0009 |
|
#define JAUS_ACTIVATE_SERVICE_CONNECTION 0x000A |
|
#define JAUS_SUSPEND_SERVICE_CONNECTION 0x000B |
|
#define JAUS_TERMINATE_SERVICE_CONNECTION 0x000C |
|
#define JAUS_REQUEST_COMPONENT_CONTROL 0x000D |
|
#define JAUS_RELEASE_COMPONENT_CONTROL 0x000E |
|
#define JAUS_CONFIRM_COMPONENT_CONTROL 0x000F |
|
#define JAUS_REJECT_COMPONENT_CONTROL 0x0010 |
|
#define JAUS_SET_TIME 0x0011 |
|
#define JAUS_CREATE_EVENT 0x01F0 |
|
#define JAUS_UPDATE_EVENT 0x01F1 |
|
#define JAUS_CANCEL_EVENT 0x01F2 |
|
#define JAUS_CONFIRM_EVENT_REQUEST 0x01F3 |
|
#define JAUS_REJECT_EVENT_REQUEST 0x01F4 |
|
#define JAUS_SET_DATA_LINK_STATUS 0x0200 |
|
#define JAUS_SET_DATA_LINK_SELECT 0x0201 |
|
#define JAUS_SET_SELECTED_DATA_LINK_STATE 0x0202 |
|
#define JAUS_SET_WRENCH_EFFORT 0x0405 |
|
#define JAUS_SET_DISCRETE_DEVICES 0x0406 |
|
#define JAUS_SET_GLOBAL_VECTOR 0x0407 |
|
#define JAUS_SET_LOCAL_VECTOR 0x0408 |
|
#define JAUS_SET_TRAVEL_SPEED 0x040A |
|
#define JAUS_SET_GLOBAL_WAYPOINT 0x040C |
|
#define JAUS_SET_LOCAL_WAYPOINT 0x040D |
|
#define JAUS_SET_GLOBAL_PATH_SEGMENT 0x040F |
|
#define JAUS_SET_LOCAL_PATH_SEGMENT 0x0410 |
|
#define JAUS_SET_JOINT_EFFORTS 0x0601 |
|
#define JAUS_SET_JOINT_POSITIONS 0x0602 |
|
#define JAUS_SET_JOINT_VELOCITIES 0x0603 |
|
#define JAUS_SET_TOOL_POINT 0x0604 |
|
#define JAUS_SET_END_EFFECTOR_POSE 0x0605 |
|
#define JAUS_SET_END_EFFECTOR_VELOCITY_STATE 0x0606 |
|
#define JAUS_SET_JOINT_MOTION 0x0607 |
|
#define JAUS_SET_END_EFFECTOR_PATH_MOTION 0x0608 |
|
#define JAUS_SET_CAMERA_POSE 0x0801 |
|
#define JAUS_SELECT_CAMERA 0x0802 |
|
#define JAUS_SET_CAMERA_CAPABILITIES 0x0805 |
|
#define JAUS_SET_CAMERA_FORMAT_OPTIONS 0x0806 |
|
#define JAUS_CREATE_VKS_OBJECTS 0x0A20 |
|
#define JAUS_DELETE_VKS_OBJECTS 0x0A25 |
|
#define JAUS_SET_VKS_FEATURE_CLASS_METADATA 0x0A21 |
|
#define JAUS_TERMINATE_VKS_DATA_TRANSFER 0x0A24 |
|
#define JAUS_SET_PAYLOAD_DATA_ELEMENT 0x0D01 |
|
#define JAUS_SPOOL_MISSION 0x0E00 |
|
#define JAUS_RUN_MISSION 0x0E01 |
|
#define JAUS_ABORT_MISSION 0x0E02 |
|
#define JAUS_PAUSE_MISSION 0x0E03 |
|
#define JAUS_RESUME_MISSION 0x0E04 |
|
#define JAUS_REMOVE_MESSAGES 0x0E05 |
|
#define JAUS_REPLACE_MESSAGES 0x0E06 |
|
|
|
// Jaus Query Class Messages |
|
#define JAUS_QUERY_COMPONENT_AUTHORITY 0x2001 |
|
#define JAUS_QUERY_COMPONENT_STATUS 0x2002 |
|
#define JAUS_QUERY_TIME 0x2011 |
|
#define JAUS_QUERY_COMPONENT_CONTROL 0x200D |
|
#define JAUS_QUERY_EVENTS 0x21F0 |
|
#define JAUS_QUERY_DATA_LINK_STATUS 0x2200 |
|
#define JAUS_QUERY_SELECTED_DATA_LINK_STATUS 0x2201 |
|
#define JAUS_QUERY_HEARTBEAT_PULSE 0x2202 |
|
#define JAUS_QUERY_PLATFORM_SPECIFICATIONS 0x2400 |
|
#define JAUS_QUERY_PLATFORM_OPERATIONAL_DATA 0x2401 |
|
#define JAUS_QUERY_GLOBAL_POSE 0x2402 |
|
#define JAUS_QUERY_LOCAL_POSE 0x2403 |
|
#define JAUS_QUERY_VELOCITY_STATE 0x2404 |
|
#define JAUS_QUERY_WRENCH_EFFORT 0x2405 |
|
#define JAUS_QUERY_DISCRETE_DEVICES 0x2406 |
|
#define JAUS_QUERY_GLOBAL_VECTOR 0x2407 |
|
#define JAUS_QUERY_LOCAL_VECTOR 0x2408 |
|
#define JAUS_QUERY_TRAVEL_SPEED 0x240A |
|
#define JAUS_QUERY_WAYPOINT_COUNT 0x240B |
|
#define JAUS_QUERY_GLOBAL_WAYPOINT 0x240C |
|
#define JAUS_QUERY_LOCAL_WAYPOINT 0x240D |
|
#define JAUS_QUERY_PATH_SEGMENT_COUNT 0x240E |
|
#define JAUS_QUERY_GLOBAL_PATH_SEGMENT 0x240F |
|
#define JAUS_QUERY_LOCAL_PATH_SEGMENT 0x2410 |
|
#define JAUS_QUERY_MANIPULATOR_SPECIFICATIONS 0x2600 |
|
#define JAUS_QUERY_JOINT_EFFORTS 0x2601 |
|
#define JAUS_QUERY_JOINT_POSITIONS 0x2602 |
|
#define JAUS_QUERY_JOINT_VELOCITIES 0x2603 |
|
#define JAUS_QUERY_TOOL_POINT 0x2604 |
|
#define JAUS_QUERY_JOINT_FORCE_TORQUES 0x2605 |
|
#define JAUS_QUERY_CAMERA_POSE 0x2800 |
|
#define JAUS_QUERY_CAMERA_COUNT 0x2801 |
|
#define JAUS_QUERY_RELATIVE_OBJECT_POSITION 0x2802 |
|
#define JAUS_QUERY_SELECTED_CAMERA 0x2804 |
|
#define JAUS_QUERY_CAMERA_CAPABILITIES 0x2805 |
|
#define JAUS_QUERY_CAMERA_FORMAT_OPTIONS 0x2806 |
|
#define JAUS_QUERY_IMAGE 0x2807 |
|
#define JAUS_QUERY_VKS_FEATURE_CLASS_METADATA 0x2A21 |
|
#define JAUS_QUERY_VKS_BOUNDS 0x2A22 |
|
#define JAUS_QUERY_VKS_OBJECTS 0x2A23 |
|
#define JAUS_QUERY_IDENTIFICATION 0x2B00 |
|
#define JAUS_QUERY_CONFIGURATION 0x2B01 |
|
#define JAUS_QUERY_SUBSYSTEM_LIST 0x2B02 |
|
#define JAUS_QUERY_SERVICES 0x2B03 |
|
#define JAUS_QUERY_PAYLOAD_INTERFACE 0x2D00 |
|
#define JAUS_QUERY_PAYLOAD_DATA_ELEMENT 0x2D01 |
|
#define JAUS_QUERY_SPOOLING_PREFERENCE 0x2E00 |
|
#define JAUS_QUERY_MISSION_STATUS 0x2E01 |
|
|
|
// Jaus Inform Class Messages |
|
#define JAUS_REPORT_COMPONENT_AUTHORITY 0x4001 |
|
#define JAUS_REPORT_COMPONENT_STATUS 0x4002 |
|
#define JAUS_REPORT_TIME 0x4011 |
|
#define JAUS_REPORT_COMPONENT_CONTROL 0x400D |
|
#define JAUS_REPORT_EVENTS 0x41F0 |
|
#define JAUS_EVENT 0x41F1 |
|
#define JAUS_REPORT_DATA_LINK_STATUS 0x4200 |
|
#define JAUS_REPORT_SELECTED_DATA_LINK_STATUS 0x4201 |
|
#define JAUS_REPORT_HEARTBEAT_PULSE 0x4202 |
|
#define JAUS_REPORT_PLATFORM_SPECIFICATIONS 0x4400 |
|
#define JAUS_REPORT_PLATFORM_OPERATIONAL_DATA 0x4401 |
|
#define JAUS_REPORT_GLOBAL_POSE 0x4402 |
|
#define JAUS_REPORT_LOCAL_POSE 0x4403 |
|
#define JAUS_REPORT_VELOCITY_STATE 0x4404 |
|
#define JAUS_REPORT_WRENCH_EFFORT 0x4405 |
|
#define JAUS_REPORT_DISCRETE_DEVICES 0x4406 |
|
#define JAUS_REPORT_GLOBAL_VECTOR 0x4407 |
|
#define JAUS_REPORT_LOCAL_VECTOR 0x4408 |
|
#define JAUS_REPORT_TRAVEL_SPEED 0x440A |
|
#define JAUS_REPORT_WAYPOINT_COUNT 0x440B |
|
#define JAUS_REPORT_GLOBAL_WAYPOINT 0x440C |
|
#define JAUS_REPORT_LOCAL_WAYPOINT 0x440D |
|
#define JAUS_REPORT_PATH_SEGMENT_COUNT 0x440E |
|
#define JAUS_REPORT_GLOBAL_PATH_SEGMENT 0x440F |
|
#define JAUS_REPORT_LOCAL_PATH_SEGMENT 0x4410 |
|
#define JAUS_REPORT_MANIPULATOR_SPECIFICATIONS 0x4600 |
|
#define JAUS_REPORT_JOINT_EFFORTS 0x4601 |
|
#define JAUS_REPORT_JOINT_POSITIONS 0x4602 |
|
#define JAUS_REPORT_JOINT_VELOCITIES 0x4603 |
|
#define JAUS_REPORT_TOOL_POINT 0x4604 |
|
#define JAUS_REPORT_JOINT_FORCE_TORQUES 0x4605 |
|
#define JAUS_REPORT_CAMERA_POSE 0x4800 |
|
#define JAUS_REPORT_CAMERA_COUNT 0x4801 |
|
#define JAUS_REPORT_RELATIVE_OBJECT_POSITION 0x4802 |
|
#define JAUS_REPORT_SELECTED_CAMERA 0x4804 |
|
#define JAUS_REPORT_CAMERA_CAPABILITIES 0x4805 |
|
#define JAUS_REPORT_CAMERA_FORMAT_OPTIONS 0x4806 |
|
#define JAUS_REPORT_IMAGE 0x4807 |
|
#define JAUS_REPORT_VKS_OBJECTS_CREATION 0x4A20 |
|
#define JAUS_REPORT_VKS_FEATURE_CLASS_METADATA 0x4A21 |
|
#define JAUS_REPORT_VKS_BOUNDS 0x4A22 |
|
#define JAUS_REPORT_VKS_OBJECTS 0x4A23 |
|
#define JAUS_REPORT_VKS_DATA_TRANSFER_TERMINATION 0x4A24 |
|
#define JAUS_REPORT_IDENTIFICATION 0x4B00 |
|
#define JAUS_REPORT_CONFIGURATION 0x4B01 |
|
#define JAUS_REPORT_SUBSYSTEM_LIST 0x4B02 |
|
#define JAUS_REPORT_SERVICES 0x4B03 |
|
#define JAUS_REPORT_PAYLOAD_INTERFACE 0x4D00 |
|
#define JAUS_REPORT_PAYLOAD_DATA_ELEMENT 0x4D01 |
|
#define JAUS_REPORT_SPOOLING_PREFERENCE 0x4E00 |
|
#define JAUS_REPORT_MISSION_STATUS 0x4E01 |
|
|
|
// Experimental Messages |
|
#define JAUS_SET_VELOCITY_STATE 0x0404 |
|
|
|
// Define JausMessage data structure |
|
struct JausMessageStruct |
|
{ |
|
// Header Properties |
|
|
|
struct |
|
{ |
|
// Properties by bit fields |
|
#ifdef JAUS_BIG_ENDIAN |
|
JausUnsignedShort reserved:2; |
|
JausUnsignedShort version:6; |
|
JausUnsignedShort expFlag:1; |
|
JausUnsignedShort scFlag:1; |
|
JausUnsignedShort ackNak:2; |
|
JausUnsignedShort priority:4; |
|
#elif JAUS_LITTLE_ENDIAN |
|
JausUnsignedShort priority:4; |
|
JausUnsignedShort ackNak:2; |
|
JausUnsignedShort scFlag:1; |
|
JausUnsignedShort expFlag:1; |
|
JausUnsignedShort version:6; |
|
JausUnsignedShort reserved:2; |
|
#else |
|
#error "Please define system endianess (see jaus.h)" |
|
#endif |
|
}properties; |
|
|
|
JausUnsignedShort commandCode; |
|
|
|
JausAddress destination; |
|
|
|
JausAddress source; |
|
|
|
JausUnsignedInteger dataSize; |
|
|
|
JausUnsignedInteger dataFlag; |
|
|
|
JausUnsignedShort sequenceNumber; |
|
|
|
// Message Data Buffer |
|
JausByte *data; |
|
|
|
struct JausMessageStruct *next; |
|
}; |
|
|
|
typedef struct JausMessageStruct *JausMessage; |
|
|
|
JAUS_EXPORT JausMessage jausMessageCreate(void); |
|
JAUS_EXPORT void jausMessageDestroy(JausMessage); |
|
|
|
JAUS_EXPORT unsigned int jausMessageSize(JausMessage); |
|
|
|
JAUS_EXPORT JausBoolean jausMessageToBuffer(JausMessage message, unsigned char *buffer, unsigned int bufferSizeBytes); |
|
JAUS_EXPORT JausBoolean jausMessageFromBuffer(JausMessage message, unsigned char *buffer, unsigned int bufferSizeBytes); |
|
JAUS_EXPORT char *jausMessageCommandCodeString(JausMessage); |
|
JAUS_EXPORT char *jausCommandCodeString(unsigned short commandCode); |
|
JAUS_EXPORT JausMessage jausMessageClone(JausMessage); |
|
JAUS_EXPORT JausBoolean jausMessageIsRejectableCommand(JausMessage message); |
|
JAUS_EXPORT unsigned short jausMessageGetComplimentaryCommandCode(unsigned short commandCode); |
|
|
|
|
|
#endif // JAUS_MESSAGE_H
|
|
|