"Control plane" considerations

Discussions around potential new RFID/LLRP device service highlight that it can be inconvenient to control some device interactions via existing EdgeX mechanisms.

Example device profile extract:

deviceResources:
  - name: "Action"
    properties:
      value: { "type": "String", readWrite: "W" }

  - name: "ROSpecID"
    description: "Client-generated Reader Operation Specification Identifier"
    properties:
      value: { type: "uint32", readWrite: "W", defaultValue: "1" }

  - name: "AccessSpecID"
    description: "Client-generated Access Specification Identifier"
    properties:
      value: { type: "uint32", readWrite: "W", defaultValue: "1" }

deviceCommands:
  - name: enableROSpec
    set:
      - { deviceResource: "ROSpecID", parameter: 0 }
      - { deviceResource: "Action", parameter: "Enable" }

  - name: startROSpec
    set:
      - { deviceResource: "ROSpecID", parameter: 0 }
      - { deviceResource: "Action", parameter: "Start" }



Potential areas of improvement for EdgeX:

  • Allow for more dynamic device profiles
    • We could provide ways of performing "safe" updates to a Device Profile, such as adding new Device Resources
  • Implement command chaining
    • In the data plane, this provides for hierarchical structure. For control, it allows commands made up of subcommands
  • Add new modelling for control-type operations
    • Rather than trying to fit such things onto the data model.
    • This may help with the common request to be able to write to the device and get results back