Unit Serial

From Ultibo.org
Revision as of 04:30, 2 September 2016 by Ultibo (Talk | contribs)

Jump to: navigation, search

Return to Unit Reference


Description


Serial devices represent a communication device that can be both read and written and has a set of common properties and capabilities. The underlying device may be an actual UART or it may be some other form of device such as a USB to Serial converter. As long as the device can implement the common capabilities then it can be accessed as a serial device without regard to the actual implementation.

Each serial device returns a set of properties that describe the capabilities of the device and includes a set of flags that indicate what features are supported.

Reads from and writes to serial devices are buffered so that varying data transfer rates can be accomodated and both reads and writes allow for non blocking so that a caller can avoid waiting for received data to be available or the device to be ready to transmit.

This unit also implements the serial logging device which can be configured via parameters in the GlobalConfig unit or from the command line.

Constants


To be documented

Type definitions


To be documented

Public variables


To be documented

Function declarations



Initialization functions

procedure SerialInit;
Description: Initialize the Serial unit and Serial device table
Note To be documented


Serial functions

function SerialDeviceOpen(Serial:PSerialDevice; BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceClose(Serial:PSerialDevice):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceRead(Serial:PSerialDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceWrite(Serial:PSerialDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceStatus(Serial:PSerialDevice):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceProperties(Serial:PSerialDevice; Properties:PSerialProperties):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceCreate:PSerialDevice;
Description: Create a new Serial entry
Return Pointer to new Serial entry or nil if Serial could not be created


function SerialDeviceCreateEx(Size:LongWord):PSerialDevice;
Description: Create a new Serial entry
Size Size in bytes to allocate for new Serial (Including the Serial entry)
Return Pointer to new Serial entry or nil if Serial could not be created


function SerialDeviceDestroy(Serial:PSerialDevice):LongWord;
Description: Destroy an existing Serial entry
Note To be documented


function SerialDeviceRegister(Serial:PSerialDevice):LongWord;
Description: Register a new Serial in the Serial table
Note To be documented


function SerialDeviceFind(SerialId:LongWord):PSerialDevice;
Description: To be documented
Note To be documented


function SerialDeviceFindByName(const Name:String):PSerialDevice; inline;
Description: To be documented
Note To be documented


function SerialDeviceFindByDescription(const Description:String):PSerialDevice; inline;
Description: To be documented
Note To be documented


function SerialDeviceEnumerate(Callback:TSerialEnumerate; Data:Pointer):LongWord;
Description: To be documented
Note To be documented


function SerialDeviceNotification(Serial:PSerialDevice; Callback:TSerialNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
Note To be documented


Serial logging functions

function SerialLoggingStart(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note To be documented


function SerialLoggingStop(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note To be documented


function SerialLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Description: To be documented
Note To be documented


RTL serial functions

function SysSerialAvailable:Boolean;
Description: Check if a Serial device is available
Note To be documented


function SysSerialOpen(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;
Description: Open the default Serial device ready for sending and receiving
BaudRate Baud rate for the connection (eg 9600, 57600, 115200 etc
DataBits Size of the data (eg SERIAL_DATA_8BIT)
StopBits Number of stop bits (eg SERIAL_STOP_1BIT)
Parity Parity type for the data (eg SERIAL_PARITY_NONE)
FlowControl Flow control for the connection (eg SERIAL_FLOW_NONE)
ReceiveDepth Size of the receive buffer (0 = Default size)
TransmitDepth Size of the transmit buffer (0 = Default size)


function SysSerialClose:LongWord;
Description: Close the default Serial device and terminate sending and receiving
Note To be documented


function SysSerialWrite(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: Write data to the default Serial device
Buffer Pointer to a buffer of data to transmit
Size The size of the buffer
Count The number of bytes written on return


Serial helper functions

function SerialGetCount:LongWord; inline;
Description: Get the current Serial count
Note To be documented


function SerialDeviceGetDefault:PSerialDevice; inline;
Description: Get the current default Serial device
Note To be documented


function SerialDeviceSetDefault(Serial:PSerialDevice):LongWord;
Description: Set the current default Serial device
Note To be documented


function SerialDeviceCheck(Serial:PSerialDevice):PSerialDevice;
Description: Check if the supplied Serial is in the Serial table
Note To be documented


function SerialBufferReadComplete(Buffer:PSerialBuffer; Removed:LongWord):Boolean;
Description: Update the buffer to reflect the number of bytes removed when reading
Note Caller must hold the lock on the serial device which owns the buffer


Return to Unit Reference