Difference between revisions of "Unit I2S"
From Ultibo.org
								
												
				 (Created page with "Return to Unit Reference   === Description === ----  ''To be documented''  === Constants === ----  ''To be documented''  === Type definitions === ----  ''To...")  | 
				|||
| (4 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
----  | ----  | ||
| − | ''  | + | '''Ultibo I2S/PCM Interface unit'''  | 
=== Constants ===  | === Constants ===  | ||
----  | ----  | ||
| − | ''  | + | |
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''I2S specific constants''' <code> I2S_* </code></div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>I2S_NAME_PREFIX = 'I2S';</code>  | ||
| + | | Name prefix for I2S Devices  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />   | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''I2S device types''' <code> I2S_TYPE_* </code></div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>I2S_TYPE_NONE = 0;</code>  | ||
| + | | style="width: 50%;"|   | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />   | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''I2S device states''' <code> I2S_STATE_* </code></div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>I2S_STATE_DISABLED = 0;</code>  | ||
| + | | style="width: 50%;"|   | ||
| + | |-  | ||
| + | | <code>I2S_STATE_ENABLED = 1;</code>  | ||
| + | |    | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />   | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''I2S device flags''' <code> I2S_FLAG_* </code></div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>I2S_FLAG_NONE = $00000000;</code>  | ||
| + | | style="width: 50%;"|   | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />   | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''I2S logging''' <code> I2S_LOG_* </code></div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>I2S_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;</code>  | ||
| + | | I2S debugging messages  | ||
| + | |-  | ||
| + | | <code>I2S_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code>  | ||
| + | | I2S informational messages, such as a device being attached or detached  | ||
| + | |-  | ||
| + | | <code>I2S_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code>  | ||
| + | | I2S warning messages  | ||
| + | |-  | ||
| + | | <code>I2S_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code>  | ||
| + | | I2S error messages  | ||
| + | |-  | ||
| + | | <code>I2S_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code>  | ||
| + | | No I2S messages  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
=== Type definitions ===  | === Type definitions ===  | ||
----  | ----  | ||
| − | ''  | + | |
| + | '''I2S properties'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">  | ||
| + | <code>PI2SProperties = ^TI2SProperties;</code>  | ||
| + | |||
| + | <code>TI2SProperties = record</code>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | |    | ||
| + | | style="width: 50%;"|   | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>   | ||
| + | |||
| + | '''I2S enumeration callback'''  | ||
| + | |||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | <code>TI2SEnumerate = function(I2S:PI2SDevice; Data:Pointer):LongWord;</code>  | ||
| + | | style="width: 40%;"|  | ||
| + | |-  | ||
| + | |}   | ||
| + | |||
| + | '''I2S notification callback'''  | ||
| + | |||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | <code>TI2SNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code>  | ||
| + | | style="width: 40%;"|  | ||
| + | |-  | ||
| + | |}   | ||
| + | |||
| + | '''I2S device get properties'''  | ||
| + | |||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | <code>TI2SDeviceGetProperties = function(I2S:PI2SDevice; Properties:PI2SProperties):LongWord;</code>  | ||
| + | | style="width: 40%;"|  | ||
| + | |-  | ||
| + | |}   | ||
| + | |||
| + | '''I2S device'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">  | ||
| + | <code>PI2SDevice = ^TI2SDevice;</code>  | ||
| + | |||
| + | <code>TI2SDevice = record</code>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | |colspan="2"|''Device Properties''  | ||
| + | |-  | ||
| + | | <code>Device:TDevice;</code>  | ||
| + | | The Device entry for this I2S  | ||
| + | |-  | ||
| + | |colspan="2"|''I2S Properties''  | ||
| + | |-  | ||
| + | | <code>I2SId:LongWord;</code>  | ||
| + | | Unique Id of this I2S in the I2S table  | ||
| + | |-  | ||
| + | | <code>I2SState:LongWord;</code>  | ||
| + | | I2S state (eg I2S_STATE_ENABLED)  | ||
| + | |-  | ||
| + | | <code>DeviceGetProperties:TI2SDeviceGetProperties;</code>  | ||
| + | | A Device specific DeviceGetProperties method implementing the standard I2S device interface  | ||
| + | |-  | ||
| + | |colspan="2"|''Statistics Properties''  | ||
| + | |-  | ||
| + | |colspan="2"|   | ||
| + | |-  | ||
| + | |colspan="2"|''Driver Properties''  | ||
| + | |-  | ||
| + | | <code>Lock:TMutexHandle;</code>  | ||
| + | | Device lock  | ||
| + | |-  | ||
| + | | <code>Properties:TI2SProperties;</code>  | ||
| + | | Device properties  | ||
| + | |-  | ||
| + | |colspan="2"|''Internal Properties''  | ||
| + | |-  | ||
| + | | <code>Prev:PI2SDevice;</code>  | ||
| + | | Previous entry in I2S table  | ||
| + | |-  | ||
| + | | <code>Next:PI2SDevice;</code>  | ||
| + | | Next entry in I2S table  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
=== Public variables ===  | === Public variables ===  | ||
----  | ----  | ||
| − | ''  | + | |
| + | '''I2S logging'''  | ||
| + | |||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | <code>I2S_DEFAULT_LOG_LEVEL:LongWord = I2S_LOG_LEVEL_DEBUG;</code>  | ||
| + | | style="width: 40%;"|Minimum level for I2S messages. Only messages with level greater than or equal to this will be printed.  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | <code>I2S_LOG_ENABLED:Boolean;</code>  | ||
| + | | style="width: 40%;"|  | ||
| + | |-  | ||
| + | |}  | ||
| + | <br />  | ||
=== Function declarations ===  | === Function declarations ===  | ||
----  | ----  | ||
| − | |||
| + | '''Initialization functions'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure I2SInit;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | |||
| + | '''I2S functions'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceGetProperties(I2S:PI2SDevice; Properties:PI2SProperties):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceCreate:PI2SDevice;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create a new I2S entry</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Return  | ||
| + | | Pointer to new I2S entry or nil if I2S could not be created  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceCreateEx(Size:LongWord):PI2SDevice;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create a new I2S entry</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Size  | ||
| + | | Size in bytes to allocate for new I2S (Including the I2S entry)  | ||
| + | |-  | ||
| + | ! Return  | ||
| + | | Pointer to new I2S entry or nil if I2S could not be created  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceDestroy(I2S:PI2SDevice):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Destroy an existing I2S entry</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceRegister(I2S:PI2SDevice):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Register a new I2S in the I2S table</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceDeregister(I2S:PI2SDevice):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Deregister a I2S from the I2S table</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceFind(I2SId:LongWord):PI2SDevice;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceFindByName(const Name:String):PI2SDevice; inline;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceFindByDescription(const Description:String):PI2SDevice; inline;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceEnumerate(Callback:TI2SEnumerate; Data:Pointer):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceNotification(I2S:PI2SDevice; Callback:TI2SNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | |||
| + | '''I2S helper functions'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SGetCount:LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current I2S count</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceGetDefault:PI2SDevice;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default I2S device</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceSetDefault(I2S:PI2SDevice):LongWord;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the current default I2S device</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">function I2SDeviceCheck(I2S:PI2SDevice):PI2SDevice;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check if the supplied I2S is in the I2S table</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure I2SLog(Level:LongWord; I2S:PI2SDevice; const AText:String);</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure I2SLogInfo(I2S:PI2SDevice; const AText:String); inline;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure I2SLogWarn(I2S:PI2SDevice; const AText:String); inline;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure I2SLogError(I2S:PI2SDevice; const AText:String); inline;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure I2SLogDebug(I2S:PI2SDevice; const AText:String); inline;</pre>  | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | ! Note  | ||
| + | | None documented  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
Return to [[Unit_Reference|Unit Reference]]  | Return to [[Unit_Reference|Unit Reference]]  | ||
Latest revision as of 03:47, 15 December 2022
Return to Unit Reference
Description
Ultibo I2S/PCM Interface unit
Constants
I2S specific constants 
 I2S_*  I2S_NAME_PREFIX = 'I2S';
 | 
Name prefix for I2S Devices | 
 
I2S device types 
 I2S_TYPE_*  I2S_TYPE_NONE = 0;
 | 
 
I2S device states 
 I2S_STATE_*  I2S_STATE_DISABLED = 0;
 | 
|
 I2S_STATE_ENABLED = 1;
 | 
 
I2S device flags 
 I2S_FLAG_*  I2S_FLAG_NONE = $00000000;
 | 
 
I2S logging 
 I2S_LOG_*  I2S_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
 | 
I2S debugging messages | 
 I2S_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
 | 
I2S informational messages, such as a device being attached or detached | 
 I2S_LOG_LEVEL_WARN = LOG_LEVEL_WARN;
 | 
I2S warning messages | 
 I2S_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
 | 
I2S error messages | 
 I2S_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
 | 
No I2S messages | 
Type definitions
I2S properties
PI2SProperties = ^TI2SProperties;
TI2SProperties = record
I2S enumeration callback
 TI2SEnumerate = function(I2S:PI2SDevice; Data:Pointer):LongWord;
 | 
I2S notification callback
 TI2SNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
 | 
I2S device get properties
 TI2SDeviceGetProperties = function(I2S:PI2SDevice; Properties:PI2SProperties):LongWord;
 | 
I2S device
PI2SDevice = ^TI2SDevice;
TI2SDevice = record
| Device Properties | |
 Device:TDevice;
 | 
The Device entry for this I2S | 
| I2S Properties | |
 I2SId:LongWord;
 | 
Unique Id of this I2S in the I2S table | 
 I2SState:LongWord;
 | 
I2S state (eg I2S_STATE_ENABLED) | 
 DeviceGetProperties:TI2SDeviceGetProperties;
 | 
A Device specific DeviceGetProperties method implementing the standard I2S device interface | 
| Statistics Properties | |
| Driver Properties | |
 Lock:TMutexHandle;
 | 
Device lock | 
 Properties:TI2SProperties;
 | 
Device properties | 
| Internal Properties | |
 Prev:PI2SDevice;
 | 
Previous entry in I2S table | 
 Next:PI2SDevice;
 | 
Next entry in I2S table | 
Public variables
I2S logging
 I2S_DEFAULT_LOG_LEVEL:LongWord = I2S_LOG_LEVEL_DEBUG;
 | 
Minimum level for I2S messages. Only messages with level greater than or equal to this will be printed. | 
 I2S_LOG_ENABLED:Boolean;
 | 
Function declarations
Initialization functions
procedure I2SInit;
Description: To be documented
| Note | None documented | 
|---|
I2S functions
function I2SDeviceGetProperties(I2S:PI2SDevice; Properties:PI2SProperties):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function I2SDeviceCreate:PI2SDevice;
Description: Create a new I2S entry
| Return | Pointer to new I2S entry or nil if I2S could not be created | 
|---|
function I2SDeviceCreateEx(Size:LongWord):PI2SDevice;
Description: Create a new I2S entry
| Size | Size in bytes to allocate for new I2S (Including the I2S entry) | 
|---|---|
| Return | Pointer to new I2S entry or nil if I2S could not be created | 
function I2SDeviceDestroy(I2S:PI2SDevice):LongWord;
Description: Destroy an existing I2S entry
| Note | None documented | 
|---|
function I2SDeviceRegister(I2S:PI2SDevice):LongWord;
Description: Register a new I2S in the I2S table
| Note | None documented | 
|---|
function I2SDeviceDeregister(I2S:PI2SDevice):LongWord;
Description: Deregister a I2S from the I2S table
| Note | None documented | 
|---|
function I2SDeviceFind(I2SId:LongWord):PI2SDevice;
Description: To be documented
| Note | None documented | 
|---|
function I2SDeviceFindByName(const Name:String):PI2SDevice; inline;
Description: To be documented
| Note | None documented | 
|---|
function I2SDeviceFindByDescription(const Description:String):PI2SDevice; inline;
Description: To be documented
| Note | None documented | 
|---|
function I2SDeviceEnumerate(Callback:TI2SEnumerate; Data:Pointer):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function I2SDeviceNotification(I2S:PI2SDevice; Callback:TI2SNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
| Note | None documented | 
|---|
I2S helper functions
function I2SGetCount:LongWord;
Description: Get the current I2S count
| Note | None documented | 
|---|
function I2SDeviceGetDefault:PI2SDevice;
Description: Get the current default I2S device
| Note | None documented | 
|---|
function I2SDeviceSetDefault(I2S:PI2SDevice):LongWord;
Description: Set the current default I2S device
| Note | None documented | 
|---|
function I2SDeviceCheck(I2S:PI2SDevice):PI2SDevice;
Description: Check if the supplied I2S is in the I2S table
| Note | None documented | 
|---|
procedure I2SLog(Level:LongWord; I2S:PI2SDevice; const AText:String);
Description: To be documented
| Note | None documented | 
|---|
procedure I2SLogInfo(I2S:PI2SDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure I2SLogWarn(I2S:PI2SDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure I2SLogError(I2S:PI2SDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure I2SLogDebug(I2S:PI2SDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
Return to Unit Reference