Impero

From WikiSonix
Jump to: navigation, search

Overview[edit]

Impero is an SDK for capturing the events from the Ultrasonix console devices. Impero works by connecting to the various consoles through the serial port to communicate with the hardware/firmware layers. When running the Sonix research software, note that a connection through Impero is not possible due to the research software already having the console port open.

Impero is ideal for custom programs built upon Texo or Porta, where imaging functions are taking place. The SDK can be integrated into the program to handle button events, and then relay specific actions to the Texo or Porta interface to change parameters, etc.

PDF Download[edit]

Download all Impero SDK documentation as a PDF

Button Identifiers[edit]

In the example program for Impero, the callback function receives a pointer void * data, that points to the information, about which button or dial on the panel has started the callback. In the figure below, the values that are expected from the pointer as interpreted as an unsigned integer, are shown over each button control. Note that the Sonix RP layout is also valid for the Sonix MDP system, though the Sonix MDP has one additional dial control near the touchscreen.

Sonix RP Console Button IDs
SonixTOUCH Console Button IDs

Programming[edit]

The following pseudo-code gives an idea of how to use Impero:

void main()
{
  // setup program
  startThread(eventThread)
  impero->connect(port)
  impero->setCallback(onButton)
}

void onButton(type, data)
{
  // check for freeze button push
  if (type == imperoEventPush && data == freezeButton)
  {
    SetEvent(freezeEvent)
  }
}

void eventThread()
{
  while(1)
  {
    // block until freeze event is set
    WaitForEvent(freezeEvent)
    
    // Texo or Porta could be used here to toggle imaging status
    ImagingSDK->toggleFreeze();
  }
}