cipelectronickey.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*******************************************************************************
  2. * Copyright (c) 2016, Rockwell Automation, Inc.
  3. * All rights reserved.
  4. *
  5. ******************************************************************************/
  6. #include <stdlib.h>
  7. #include "cipelectronickey.h"
  8. void ElectronicKeySetKeyFormat(CipElectronicKey *const electronic_key,
  9. const CipUsint key_format) {
  10. electronic_key->key_format = key_format;
  11. }
  12. CipUint ElectronicKeyGetKeyFormat(const CipElectronicKey *const electronic_key)
  13. {
  14. return electronic_key->key_format;
  15. }
  16. void ElectronicKeySetKeyData(CipElectronicKey *const electronic_key,
  17. void *key_data) {
  18. electronic_key->key_data = key_data;
  19. }
  20. void *ElectronicKeyGetKeyData(const CipElectronicKey *const electronic_key) {
  21. return electronic_key->key_data;
  22. }
  23. typedef struct electronic_key_format_4 {
  24. CipUint vendor_id;
  25. CipUint device_type;
  26. CipUint product_code;
  27. CipByte major_revision_compatibility;
  28. CipUsint minor_revision;
  29. } ElectronicKeyFormat4;
  30. const size_t kElectronicKeyFormat4Size = sizeof(ElectronicKeyFormat4);
  31. ElectronicKeyFormat4 *ElectronicKeyFormat4New() {
  32. return (ElectronicKeyFormat4 *)calloc( 1, sizeof(ElectronicKeyFormat4) );
  33. }
  34. void ElectronicKeyFormat4Delete(ElectronicKeyFormat4 **electronic_key) {
  35. free(*electronic_key);
  36. *electronic_key = NULL;
  37. }
  38. void ElectronicKeyFormat4SetVendorId(ElectronicKeyFormat4 *const electronic_key,
  39. const CipUint vendor_id) {
  40. electronic_key->vendor_id = vendor_id;
  41. }
  42. CipUint ElectronicKeyFormat4GetVendorId(
  43. const ElectronicKeyFormat4 *const electronic_key) {
  44. return electronic_key->vendor_id;
  45. }
  46. void ElectronicKeyFormat4SetDeviceType(
  47. ElectronicKeyFormat4 *const electronic_key,
  48. const CipUint device_type) {
  49. electronic_key->device_type = device_type;
  50. }
  51. CipUint ElectronicKeyFormat4GetDeviceType(
  52. const ElectronicKeyFormat4 *const electronic_key) {
  53. return electronic_key->device_type;
  54. }
  55. void ElectronicKeyFormat4SetProductCode(
  56. ElectronicKeyFormat4 *const electronic_key,
  57. const CipUint product_code) {
  58. electronic_key->product_code = product_code;
  59. }
  60. CipUint ElectronicKeyFormat4GetProductCode(
  61. const ElectronicKeyFormat4 *const electronic_key) {
  62. return electronic_key->product_code;
  63. }
  64. void ElectronicKeyFormat4SetMajorRevisionCompatibility(
  65. ElectronicKeyFormat4 *const electronic_key,
  66. const CipByte major_revision_compatibility) {
  67. electronic_key->major_revision_compatibility = major_revision_compatibility;
  68. }
  69. CipByte ElectronicKeyFormat4GetMajorRevision(
  70. const ElectronicKeyFormat4 *const electronic_key) {
  71. const CipByte kMajorRevisionMask = 0x7F;
  72. return (electronic_key->major_revision_compatibility & kMajorRevisionMask);
  73. }
  74. bool ElectronicKeyFormat4GetMajorRevisionCompatibility(
  75. const ElectronicKeyFormat4 *const electronic_key) {
  76. const CipByte kCompatibilityMask = 0x80;
  77. if( kCompatibilityMask ==
  78. (electronic_key->major_revision_compatibility & kCompatibilityMask) ) {
  79. return true;
  80. }
  81. return false;
  82. }
  83. void ElectronicKeyFormat4SetMinorRevision(
  84. ElectronicKeyFormat4 *const electronic_key,
  85. const CipUsint minor_revision) {
  86. electronic_key->minor_revision = minor_revision;
  87. }
  88. CipUsint ElectronicKeyFormat4GetMinorRevision(
  89. const ElectronicKeyFormat4 *const electronic_key) {
  90. return electronic_key->minor_revision;
  91. }