E-Sharp Helpcenter

Accordion Software Modules

Introduction

The Accordion system have a great list of built-in features and because of the hardware module slots, a lot of situations can be addressed. To add to this module type of flexibilty, there is also the option to develop and use the Accordion Software Modules.

Software modules are external implementations that allow peripheral functions to integrate into the Accordion framework.


450px-Agent_and_indicator_lamp_example.png
Example of an external peripheral.

Example

Let's go through a simple example:

You are using your Accordion system happily, however, someone in your team got the idea they want a physical indicator lamp connected to your process. They already decided on a model and now you need to make it work. This is a simple example when you can make use of Software Modules.

You gather the datasheet and information around your indicator lamp and then reach out to the Accordion team at E#, explaining your need and bringing the technical info.

The lamp in your case has a USB-connector, it communicates via the UART bus protocol, it also has a defined system for sending commands for different sounds and colors.

  1. Accordion Team says, sure! We can make it work, we can write a Software Module, enabling the Accordion system to tell the indicator lamp what to do. The Accordion systems you have, gets an update with the new Software Module. Good news! More details on usage below:


Software_Module_Settings.png

Settings

The tab "Hardware Config" gives some options:

  • Choosing the Module to edit in the dropdown

  • Enable/Disable auto-load of the module

  • Giving the module a suitable name

  • Connecting to it's "inner" class in the software code (E# use)

  • Point to the correct driver and location in the system (E# use)

Initial Data

This data can be used to get the setting data or some static data into the software module. Le'ts say you want to have a specific setting for different AGENTs, here we can for example enter a serial, license number or like in the picture, the USB port which the system uses for the Light tower.

Channels

Engine Channels

The channels controlling the software module engine itself can be used in different scenarios.

Channel name

Usage

Comment

Engine.AvailableModules

Read this channel to get a list, comma separated, of the

available modules (corresponds to dropdownlist in settings).


Engine.LoadedModules

Read this channel to see the current loaded modules.

Returns a list if multiple loaded.

Can be used to check if you need to re-load a

module at a certain stage or step in a process.

Engine.LoadModule

Write the "Name" of the module to load it.

Ability to load a module on-demand when needed

in a process or FSM state.

Engine.UnloadModule

Write the "Name" of the module you want to unload.


1200px-Software_Modules_Engine_Channels.png
Engine channels controlling software modules.


Module-specific Channels

Yes, we now got the ability to control our module. For the example above, the light, it can look something like this:

Tower_channels.png
Module-specific Channels

Write to the BUZZER, COLOR or FLASH registers to control the module in this case.