UNPKG

canopen

Version:

CANopen implementation for Javascript

171 lines (129 loc) 3.79 kB
/** * @file CANopen type definitions. * @author Wilkins White * @copyright 2024 Daxbot */ /** * CANopen object types. * * @enum {number} * @see CiA301 "Object code usage" (§7.4.3) */ const ObjectType = { /** An object with no data fields. */ NULL: 0, /** Large variable amount of data, e.g. executable program code. */ DOMAIN: 2, /** Denotes a type definition such as BOOLEAN, UNSIGNED16, etc. */ DEFTYPE: 5, /** Defines a new record type, e.g. PDO mapping structure. */ DEFSTRUCT: 6, /** A single value such as an UNSIGNED8, INTEGER16, etc. */ VAR: 7, /** * A multiple data field object where each data field is a simple variable * of the same basic data type, e.g. array of UNSIGNED16. Sub-index 0 of an * ARRAY is always UNSIGNED8 and therefore not part of the ARRAY data. */ ARRAY: 8, /** * A multiple data field object where the data fields may be any * combination of simple variables. Sub-index 0 of a RECORD is always * UNSIGNED8 and sub-index 255 is always UNSIGNED32 and therefore not part * of the RECORD data. */ RECORD: 9, }; /** * CANopen access types. * * The access rights for a particular object. The viewpoint is from the network * into the CANopen device. * * @enum {string} * @see CiA301 "Access usage" (§7.4.5) */ const AccessType = { /** Read and write access. */ READ_WRITE: 'rw', /** Write only access. */ WRITE_ONLY: 'wo', /** Read only access. */ READ_ONLY: 'ro', /** * Read only access. Contents should not change after initialization. */ CONSTANT: 'const', }; /** * CANopen data types. * * The static data types are placed in the object dictionary at their specified * index for definition purposes only. Simple types may be mapped to an RPDO * as a way to define space for data that is not being used by this CANopen * device. * * @enum {number} * @see CiA301 "Data type entry usage" (§7.4.7) */ const DataType = { /** Boolean value (bool). */ BOOLEAN: 1, /** 8-bit signed integer (int8_t). */ INTEGER8: 2, /** 16-bit signed integer (int16_t). */ INTEGER16: 3, /** 32-bit signed integer (int32_t). */ INTEGER32: 4, /** 8-bit unsigned integer (uint8_t). */ UNSIGNED8: 5, /** 16-bit unsigned integer (uint16_t). */ UNSIGNED16: 6, /** 32-bit unsigned integer (uint32_t). */ UNSIGNED32: 7, /** 32-bit floating point (float). */ REAL32: 8, /** Null terminated c-string. */ VISIBLE_STRING: 9, /** Raw character buffer. */ OCTET_STRING: 10, /** Unicode string. */ UNICODE_STRING: 11, /** Time since January 1, 1984. */ TIME_OF_DAY: 12, /** Time difference. */ TIME_DIFFERENCE: 13, /** Data of variable length. */ DOMAIN: 15, /** 64-bit floating point (double) */ REAL64: 17, /** 24-bit signed integer. */ INTEGER24: 16, /** 40-bit signed integer. */ INTEGER40: 18, /** 48-bit signed integer. */ INTEGER48: 19, /** 56-bit signed integer. */ INTEGER56: 20, /** 64-bit signed integer (int64_t). */ INTEGER64: 21, /** 24-bit unsigned integer. */ UNSIGNED24: 22, /** 40-bit unsigned integer. */ UNSIGNED40: 24, /** 48-bit unsigned integer. */ UNSIGNED48: 25, /** 56-bit unsigned integer. */ UNSIGNED56: 26, /** 64-bit unsigned integer (uint64_t) */ UNSIGNED64: 27, /** PDO parameter record. */ PDO_PARAMETER: 32, /** PDO mapping parameter record. */ PDO_MAPPING: 33, /** SDO parameter record. */ SDO_PARAMETER: 34, /** Identity record. */ IDENTITY: 35, }; module.exports = exports = { ObjectType, AccessType, DataType };