This is a
ti.sdo.ipc.Notify driver that utilizes shared memory
and inter-processor hardware interrupts for notification between cores.
This driver is designed to work with only F28M35x family of devices.
This module needs to be plugged with an appropriate module that implements
the
ti.sdo.ipc.notifyDrivers.IInterrupt interface for a given
device.
The driver utilizes shared memory in the manner indicated by the following
diagram.
NOTE: Processor '0' corresponds to the M3 and '1' corresponds to the C28
sharedAddr -> --------------------------- bytes
| eventEntry0 (0) | 8
| eventEntry1 (0) | 8
| ... |
| eventEntry15 (0) | 8
| |
|-------------------------|
| eventEntry16 (0) | 8
| eventEntry17 (0) | 8
| ... |
| eventEntry31 (0) | 8
| |
|-------------------------|
| putWriteIndex (0) | 4
| |
|-------------------------|
| getReadIndex (1) | 4
| |
|-------------------------|
| eventEntry0 (1) | 8
| eventEntry1 (1) | 8
| ... |
| eventEntry15 (1) | 8
| |
|-------------------------|
| eventEntry16 (1) | 8
| eventEntry17 (1) | 8
| ... |
| eventEntry31 (1) | 8
| |
|-------------------------|
| putWriteIndex (1) | 4
| |
|-------------------------|
| getReadIndex (0) | 4
| |
|-------------------------|
Legend:
(0), (1) : belongs to the respective processor
config NotifyDriverCirc_A_notSupported // module-wide |
|
Assert raised when trying to use Notify_[enable/disable]Event with
NotifyDriverCirc
extern const Assert_Id NotifyDriverCirc_A_notSupported;
NotifyDriverCirc_sharedMemReq() // module-wide |
|
Amount of shared memory required for creation of each instance
ARGUMENTS
params
Pointer to parameters that will be used in the
create
RETURNS
Number of MAUs in shared memory needed to create
the instance.
Module-Wide Built-Ins |
|
// Get this module's unique id
Bool NotifyDriverCirc_Module_startupDone();
// Test if this module has completed startup
// The heap from which this module allocates memory
Bool NotifyDriverCirc_Module_hasMask();
// Test whether this module has a diagnostics mask
Bits16 NotifyDriverCirc_Module_getMask();
// Returns the diagnostics mask for this module
Void NotifyDriverCirc_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
Instance Object Types |
|
typedef struct NotifyDriverCirc_Object NotifyDriverCirc_Object;
// Opaque internal representation of an instance object
// Client reference to an instance object
typedef struct NotifyDriverCirc_Struct NotifyDriverCirc_Struct;
// Opaque client structure large enough to hold an instance object
// Convert this instance structure pointer into an instance handle
// Convert this instance handle into an instance structure pointer
Instance Config Parameters |
|
typedef struct NotifyDriverCirc_Params {
// Instance config-params structure
// Common per-instance configs
Ptr readAddr;
// Address in shared memory where buffer is placed
Ptr writeAddr;
// Address in shared memory where buffer is placed
} NotifyDriverCirc_Params;
// Initialize this config-params structure with supplier-specified defaults before instance creation
config NotifyDriverCirc_readAddr // instance |
|
Address in shared memory where buffer is placed
DETAILS
Use
sharedMemReq to determine the amount of shared memory
required.
config NotifyDriverCirc_writeAddr // instance |
|
Address in shared memory where buffer is placed
DETAILS
Use
sharedMemReq to determine the amount of shared memory
required.
NotifyDriverCirc_disable() // instance |
|
Disable a NotifyDriver instance
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
DETAILS
Disables the ability of a Notify driver to receive events for a given
processor. This interface function is called by the Notify_disable
function. Refer to its documentation for more details.
NotifyDriverCirc_disableEvent() // instance |
|
Disable an event
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
eventId
Number of event to disable
DETAILS
This interface function is called by the Notify_disableEvent function.
Refer to its documentation for more details.
The Notify module does validation of the eventId. The Notify module
enters calls this function within the Notify module gate.
NotifyDriverCirc_enable() // instance |
|
Enable a NotifyDriver instance
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
DETAILS
Enables the ability of a Notify driver to receive events for a given
processor. This interface function is called by the Notify_restore
function. Refer to its documentation for more details.
NotifyDriverCirc_enableEvent() // instance |
|
Enable an event
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
eventId
Number of event to enable
DETAILS
This interface function is called by the Notify_disableEvent function.
Refer to its documentation for more details.
The Notify module does validation of the eventId. The Notify module
enters calls this function within the Notify module gate.
NotifyDriverCirc_registerEvent() // instance |
|
Register a callback to an event
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
eventId
Number of event that is being registered
DETAILS
This driver function is called by the Notify_registerEvent function
within the Notify module gate. Refer to its documentation for more
details.
NotifyDriverCirc_sendEvent() // instance |
|
Send a signal to an event
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
eventId
Number of event to signal
payload
Payload (optional) to pass to callback function
waitClear
If TRUE, have the NotifyDriver wait for
acknowledgement back from the destination
processor.
RETURNS
Notify status
DETAILS
This interface function is called by the Notify_sendEvent function.
Notify_sendEvent does not provide any context protection for
INotifyDriver_sendEvent, so appropriate measures must be taken within
the driver itself.
NotifyDriverCirc_unregisterEvent() // instance |
|
Remove an event listener from an event
ARGUMENTS
handle
handle of a previously-created NotifyDriverCirc instance object
eventId
Number of event that is being unregistered
DETAILS
This driver function is called by the Notify_unregisterEvent function
within the Notify module gate. Refer to it for more details.
Instance Convertors |
|
// unconditionally move one level up the inheritance hierarchy
// conditionally move one level down the inheritance hierarchy; NULL upon failure
Instance Built-Ins |
|
Int NotifyDriverCirc_Object_count();
// The number of statically-created instance objects
// The handle of the i-th statically-created instance object (array == NULL)
// The handle of the first dynamically-created instance object, or NULL
// The handle of the next dynamically-created instance object, or NULL
// The heap used to allocate dynamically-created instance objects
// The label associated with this instance object
// The name of this instance object