OpENer - Open Source EtherNet/IP(TM) I/O Target Stack  2.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cipelectronickey.c
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (c) 2016, Rockwell Automation, Inc.
3  * All rights reserved.
4  *
5  ******************************************************************************/
6 
7 #include <stdlib.h>
8 
9 #include "cipelectronickey.h"
10 
11 void ElectronicKeySetKeyFormat(CipElectronicKey *const electronic_key,
12  const CipUsint key_format) {
13  electronic_key->key_format = key_format;
14 }
15 
17 {
18  return electronic_key->key_format;
19 }
20 
21 void ElectronicKeySetKeyData(CipElectronicKey *const electronic_key,
22  void *key_data) {
23  electronic_key->key_data = key_data;
24 }
25 
26 void *ElectronicKeyGetKeyData(const CipElectronicKey *const electronic_key) {
27  return electronic_key->key_data;
28 }
29 
30 typedef struct electronic_key_format_4 {
37 
39 
41  return (ElectronicKeyFormat4 *)calloc( 1, sizeof(ElectronicKeyFormat4) );
42 }
43 
45  free(*electronic_key);
46  *electronic_key = NULL;
47 }
48 
50  const CipUint vendor_id) {
51  electronic_key->vendor_id = vendor_id;
52 }
53 
55  const ElectronicKeyFormat4 *const electronic_key) {
56  return electronic_key->vendor_id;
57 }
58 
60  ElectronicKeyFormat4 *const electronic_key,
61  const CipUint device_type) {
62  electronic_key->device_type = device_type;
63 }
64 
66  const ElectronicKeyFormat4 *const electronic_key) {
67  return electronic_key->device_type;
68 }
69 
71  ElectronicKeyFormat4 *const electronic_key,
72  const CipUint product_code) {
73  electronic_key->product_code = product_code;
74 }
75 
77  const ElectronicKeyFormat4 *const electronic_key) {
78  return electronic_key->product_code;
79 }
80 
82  ElectronicKeyFormat4 *const electronic_key,
83  const CipByte major_revision_compatibility) {
84  electronic_key->major_revision_compatibility = major_revision_compatibility;
85 }
86 
88  const ElectronicKeyFormat4 *const electronic_key) {
89  const CipByte kMajorRevisionMask = 0x7F;
90  return (electronic_key->major_revision_compatibility & kMajorRevisionMask);
91 }
92 
94  const ElectronicKeyFormat4 *const electronic_key) {
95  const CipByte kCompatibilityMask = 0x80;
96  if( kCompatibilityMask ==
97  (electronic_key->major_revision_compatibility & kCompatibilityMask) ) {
98  return true;
99  }
100  return false;
101 }
102 
104  ElectronicKeyFormat4 *const electronic_key,
105  const CipUsint minor_revision) {
106  electronic_key->minor_revision = minor_revision;
107 }
108 
110  const ElectronicKeyFormat4 *const electronic_key) {
111  return electronic_key->minor_revision;
112 }
void ElectronicKeyFormat4Delete(ElectronicKeyFormat4 **electronic_key)
Destructor for the electroic key format 4 class.
CipUint ElectronicKeyFormat4GetDeviceType(const ElectronicKeyFormat4 *const electronic_key)
Gets the device type from a format 4 electronic key.
CipByte ElectronicKeyFormat4GetMajorRevision(const ElectronicKeyFormat4 *const electronic_key)
Gets the major revision from an format 4 electronic key.
void ElectronicKeyFormat4SetVendorId(ElectronicKeyFormat4 *const electronic_key, const CipUint vendor_id)
Sets vendor ID in the electronic key.
void ElectronicKeyFormat4SetDeviceType(ElectronicKeyFormat4 *const electronic_key, const CipUint device_type)
Sets the device type in the electronic key.
const size_t kElectronicKeyFormat4Size
CipUint ElectronicKeyFormat4GetVendorId(const ElectronicKeyFormat4 *const electronic_key)
Gets the vendor ID form the electronic key.
void * ElectronicKeyGetKeyData(const CipElectronicKey *const electronic_key)
uint8_t CipByte
Definition: typedefs.h:43
CIP Electronic Key Segment struct.
void ElectronicKeyFormat4SetMajorRevisionCompatibility(ElectronicKeyFormat4 *const electronic_key, const CipByte major_revision_compatibility)
Sets the major revision byte including the compatibility flag.
CipUint ElectronicKeyGetKeyFormat(const CipElectronicKey *const electronic_key)
uint8_t CipUsint
Definition: typedefs.h:46
struct electronic_key_format_4 ElectronicKeyFormat4
bool ElectronicKeyFormat4GetMajorRevisionCompatibility(const ElectronicKeyFormat4 *const electronic_key)
Gets the Compatibility flag from the format 4 electronic key.
void ElectronicKeyFormat4SetMinorRevision(ElectronicKeyFormat4 *const electronic_key, const CipUsint minor_revision)
Sets the devices minor revision in an format 4 electronic key.
void ElectronicKeySetKeyData(CipElectronicKey *const electronic_key, void *key_data)
ElectronicKeyFormat4 * ElectronicKeyFormat4New()
Constructor for the electroic key format 4 class.
uint16_t CipUint
Definition: typedefs.h:47
void ElectronicKeySetKeyFormat(CipElectronicKey *const electronic_key, const CipUsint key_format)
CipUint ElectronicKeyFormat4GetProductCode(const ElectronicKeyFormat4 *const electronic_key)
Gets the product code from an format 4 electronic key.
CipUsint ElectronicKeyFormat4GetMinorRevision(const ElectronicKeyFormat4 *const electronic_key)
Gets the minor revision from an format 4 electronic key.
void ElectronicKeyFormat4SetProductCode(ElectronicKeyFormat4 *const electronic_key, const CipUint product_code)
Set product code in the electronic key.