Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: added API description for goal_miDmNew and goal_miDmGroupNew

This chapter lists the API functions that are provided by GOAL’s MCTC. Next to a short description and the presentation of the function arguments additional notes are given.

Handling these arguments is simplified in the code examples.

MCTC API

goal_miMctcOpen - Open and activate mctc instance

This function opens an mctc instance. This enables sending and receiving.

Returns a GOAL_STATUS_T status.

Table: goal_miMctcOpen arguments

Arguments

Description

GOAL_MI_MCTC_INST_T **ppInst

return handle

unsigned int id

id of instance

Code Block
res = goal_miMctcOpen(&pInst, GOAL_ID_DEFAULT);

Remark: For compatibity reasons this function is also available as goal_rpcSetupChannel as part of the RPC api.

goal_miMctcCbRegReset - Register Reset Callback

This function registers a callback, triggered by MCTC when a reset is required. Multiple callbacks can be set, called one by another in order of registration.

Returns a GOAL_STATUS_T status.

Table: goal_miMctcCbRegReset arguments

Arguments

Description

GOAL_MI_MCTC_CB_RESET_T func

callback function

Code Block
res = goal_miMctcCbRegToutRx(appl_syncReset);

goal_miMctcCbRegToutRx - Register RX Timeout Callback

This function registers a callback, triggered by MCTC on receive timeout. Multiple callbacks can be set, called one by another in order of registration.

Returns a GOAL_STATUS_T status.

Table: goal_miMctcCbRegToutRx arguments

Arguments

Description

GOAL_MI_MCTC_CB_TIMEOUT_RX_T func

callback function

Code Block
res = goal_miMctcCbRegToutRx(appl_syncTimeout);

goal_miMctcStatusGet - get the MCTC status

This function gets the status of the MCTC instance.

Returns GOAL_OK if MCTC is ready.

Table: goal_miMctcStatusGet arguments

Arguments

Description

unsigned int id

instance id

Code Block
languagec
res = goal_miMctcStatusGet(GOAL_ID_DEFAULT);
if (GOAL_RES_ERR(res)){
    return;
}

goal_miMctcInstGetById - Instance Get By Id

Based on the instance ID, this function returns the assigned MCTC handle.

Returns a GOAL_STATUS_T status.

Table: goal_miMctcInstGetById arguments

Arguments

Description

GOAL_MI_MCTC_INST_T **ppMiMctcInst

[out] MCTC MI instance

uint32_t id

MCTC MI instance id

Code Block
res = goal_miMctcInstGetById(&pMiMctcInst, GOAL_ID_DEFAULT);

goal_miMctcCfgTout - configure RPC timeout

This function sets the RPC timeout before creating a MCTC instance.

Returns a GOAL_STATUS_T status.

Table: goal_miMctcCfgTout arguments

Arguments

Description

uint32_t timeout

MCTC RPC timeout

A value of 0 disables the RPC timeout. This should only be uses for debugging. This function needs to be called before goal_miMctcOpen().

Code Block
languagec
/* disable RPC timeout */
res = goal_miMctcCfgTout(0);

DM API

goal_miDmNew - New Instance

Creates a new GOAL MI DM instance. If ppMiDm isn't NULL the handle is returned.

Returns a GOAL_STATUS_T status.

Table: goal_miDmNew arguments

Arguments

Description

GOAL_MI_DM_T **ppMiDm

[out] MI DM handle

uint32_t id

handle id

unsigned int len

buffer length of DM

const char *strDesc

description

Code Block
languagec
/* create a DM handle */
res = goal_miDmNew(&pMiDm, APPL_DM_ID, APPL_DM_BUFFER_LEN, "appl_dm");

goal_miDmGroupNew - Create a DM group

Creates a new group within DM handle. A group is used to keep partitions. If ppGroup is NULL no handle is returned.

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupNew arguments

Arguments

Description

GOAL_MI_DM_GROUP_T **ppGroup

[out] group handle

uint32_t idMiDm

MI DM id

GOAL_ID_T idGroup

group id

Code Block
languagec
/* create a DM handle */
 res = goal_miDmGroupNew(&pMiDmGroup, APPL_DM_ID, APPL_DM_ID_GROUP);

goal_miDmPartReg - Register Data Partition

This function attaches a new partition to existing one on the data buffer, named by DM handle ID. The partition is assigned to the named group.

GOAL logs the start position and length of a new partition to facilitate a review of data buffer configuration.

Note: Groups can only be created in the setup phase. If the memory allocation is already closed the call to goal_miDmGroupNew will fail if the group doesn’t exist.

Returns a GOAL_STATUS_T status.

Table: goal_miDmPartReg arguments

Arguments

Description

uint32_t idMiDm

DM handle id

GOAL_ID_T idGroup

group id

GOAL_MI_DM_PART_T *pPart

partition data

uint32_t lenPart

partition length

Code Block
languagec
/* register MI DM partitions */
res = goal_miDmPartReg(GOAL_MI_MCTC_DIR_PEER_FROM, GOAL_ID_APPL,
                                        &mMiDmRead, sizeof(APPL_MSG_T));

goal_miDmPartIdxReg - Register Data Partition

This function occupies a partition on the data buffer, at the index position. If it is already in use, an error is raised. The partition is assigned to the named group.

GOAL logs the start position and length of a new partition to facilitate a review of data buffer configuration.

Note: Groups can only be created in the setup phase. If the memory allocation is already closed the call to goal_miDmGroupNew() will fail if the group doesn’t exist.

Returns a GOAL_STATUS_T status.

Table: goal_miDmPartIdxReg arguments

Arguments

Description

uint32_t idMiDm

DM handle id

GOAL_ID_T idGroup

group id

GOAL_MI_DM_PART_T *pPart

partition data

uint32_t lenPart

partition length

uint32_t idx

partition index

Code Block
languagec
/* register MI DM partitions */
res = goal_miDmPartIdxReg(GOAL_MI_MCTC_DIR_PEER_FROM, GOAL_ID_APPL,
                                        &mMiDmRead, sizeof(APPL_MSG_T), 0);

goal_miDmPartSizeGet - Get Partition Size

This function returns the size of a registered partition. If the partition handle is invalid or not active, 0 is returned.

Table: goal_miDmPartSizeGet arguments

Arguments

Description

GOAL_MI_DM_PART_T *pPart

partition data

Code Block
res = goal_miDmPartSizeGet(&mMiDmRead);

goal_miDmPartStatusGet - Get Partition Status

This function returns the status of a registered partition. If the partition handle is valid and active, GOAL_TRUE is returned.

Table: goal_miDmPartStatusGet arguments

Arguments

Description

GOAL_MI_DM_PART_T *pPart

partition data

Code Block
languagec
GOAL_BOOL_T status;                             /* partition status */
status = goal_miDmPartStatusGet(&mMiDmRead);

goal_miDmSingleWrite - Single Write

Writing data to a single partition is done by this function.

Returns a GOAL_STATUS_T status.

Table: goal_miDmSingleWrite arguments

Arguments

Description

GOAL_MI_DM_PART_T *pPart

partition data

uint8_t *pBuf

data source

unsigned int len

write length

Code Block
languagec
res = goal_miDmSingleWrite(&mMiDmWrite, (uint8_t *) &msgData,
    sizeof(APPL_MSG_T));

goal_miDmGroupPartWrite - Partition Write

Writing data to a partition is done by this function. The group has to be locked by goal_miDmGroupWriteStart() before and released by goal_miDmGroupWriteEnd() afterwards.

Warning: Writing to a single partitions write buffer isn’t thread safe if not locked by goal_miDmGroupWriteStart() and goal_miDmGroupWriteEnd().

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupPartWrite arguments

Arguments

Description

GOAL_MI_DM_PART_T *pPart

partition data

uint8_t *pBuf

data source

unsigned int len

write length

Code Block
res = goal_miDmGroupPartWrite(&mMiDmWrite[cnt], &pData[cnt], len);

goal_miDmGroupWriteBufGet - Retrieve Direct Write Buffer

This function retrieve direct write buffer for access. The group has to be locked by goal_miDmGroupWriteStart() before and released by goal_miDmGroupWriteEnd() afterwards.

Warning: Writing to a single partitions write buffer isn’t thread safe if not locked by goal_miDmGroupWriteStart() and goal_miDmGroupWriteEnd().

The content of provided pointer is uncertain. It is neither empty nor holding old data. Ensure to write the complete buffer, invalid data will be exchanged otherwise.

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupWriteBufGet arguments

Arguments

Description

uint8_t **ppBuf

[out] partition pointer

uint32_t *pLen

partition length

GOAL_MI_DM_PART_T *pPart

partition data

Code Block
res = goal_miDmGroupWriteBufGet(&pBuf, &len, mMiDmWrite);

goal_miDmGroupWriteStart - Group Write Start

This function locks a group of partitions on the data buffer for updating them. Unlocking the group is done by goal_miDmGroupWriteEnd().

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupWriteStart arguments

Arguments

Description

GOAL_MI_DM_GROUP_T *pGroup

partition group

Code Block
res = goal_miDmGroupWriteStart(pMiMctc->pGroup);

goal_miDmGroupWriteEnd - Group Write Start

This function unlocks a group of partitions on the data buffer. Locking the group is done by goal_miDmGroupWriteStart.

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupWriteEnd arguments

Arguments

Description

GOAL_MI_DM_GROUP_T *pGroup

partition group

Code Block
res = goal_miDmGroupWriteEnd(pMiMctc->pGroup);

goal_miDmSingleRead - Single Read

Reading the data of a single partition is done by this function.

Returns a GOAL_STATUS_T status.

Table: goal_miDmSingleRead arguments

Arguments

Description

GOAL_MI_DM_PART_T *pPart

partition data

uint8_t *pBuf

buffer reference

Code Block
res = goal_miDmSingleRead(&mMiDmRead, (uint8_t *) &msgData);

goal_miDmSingleReadBufGet - Retrieve Direct Read Buffer

This function retrieve direct read buffer for access.

Returns a GOAL_STATUS_T status.

Table: goal_miDmSingleReadBufGet arguments

Arguments

Description

uint8_t **ppBuf

[out] partition pointer

uint32_t *pLen

partition length

GOAL_MI_DM_PART_T *pPart

partition data

Code Block
res = goal_miDmSingleReadBufGet(&pBuf, &len, &mMiDmRead);

goal_miDmGroupPartRead - Get Group Handle by Index

Reading data from a partition is done by this function. The group has to be locked by goal_miDmGroupReadStart() before and released by goal_miDmGroupReadEnd() afterwards.

Warning: Reading from a single partition isn’t thread safe if not locked by goal_miDmGroupReadStart() and goal_miDmGroupReadEnd().

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupPartRead arguments

Arguments

Description

GOAL_MI_DM_PART_T *pPart

partition data

uint8_t *pBuf

data source

Code Block
res = goal_miDmGroupPartRead(&pGroup, &pData[cnt]);

goal_miDmGroupReadBufGet - Retrieve Direct Read Buffer

This function retrieve direct read buffer for access. The group has to be locked by goal_miDmGroupReadStart() before and released by goal_miDmGroupReadEnd() afterwards.

Warning: Reading from a single partition buffer isn’t thread safe if not locked by goal_miDmGroupReadStart() and goal_miDmGroupReadEnd().

Multiple calls of goal_miDmGroupReadBufGet() between the same goal_miDmGroupReadStart() and goal_miDmGroupReadEnd() correspond to the same process data image, i.e. the read data are consistent more than one read operations.

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupReadBufGet arguments

Arguments

Description

uint8_t **ppBuf

[out] partition pointer

uint32_t *pLen

partition length

GOAL_MI_DM_PART_T *pPart

partition data

Code Block
res = goal_miDmGroupReadBufGet(&pBuf, &len, mMiDmRead);

goal_miDmGroupReadStart - Group Read Start

This function locks a group of partitions on the data buffer for reading them. Unlocking the group is done by goal_miDmGroupReadEnd().

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupReadStart arguments

Arguments

Description

GOAL_MI_DM_GROUP_T *pGroup

partition group

Code Block
res = goal_miDmGroupReadStart(pMiMctc->pGroup);

goal_miDmGroupReadEnd - Group Read Start

This function unlocks a group of partitions on the data buffer. Locking the group is done by goal_miDmGroupReadStart().

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupReadEnd arguments

Arguments

Description

GOAL_MI_DM_GROUP_T *pGroup

partition group

Code Block
res = goal_miDmGroupReadEnd(pMiMctc->pGroup);

goal_miDmGroupGetByIdx - Get Group Handle by Index

This function is used to get the handle of a group.

Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupGetByIdx arguments

Arguments

Description

GOAL_MI_DM_GROUP_T **ppGroup

[out] group handle

uint32_t idMiDm

MI DM id

GOAL_ID_T idGroup

group id

Code Block
languagec
res = goal_miDmGroupGetByIdx(&pGroup, GOAL_MI_MCTC_DIR_PEER_FROM
    , GOAL_ID_APPL);

goal_miDmInstGetByPart - Get Instance By Part Handle

This function is used to get the DM handle of a partition handle.

Returns a GOAL_STATUS_T status.

Table: goal_miDmInstGetByPart arguments

Arguments

Description

GOAL_MI_DM_T **ppDm

[out] MI DM handle

GOAL_MI_DM_PART_T *pPart

part handle

Code Block
res = goal_miDmInstGetByPart(&pDm, mMiDmRead);

goal_miDmCbReg - Register Callback

This function is used to register a callback, informing the application about any new incoming or outgoing data. Setting a MI DM handle callback is preferred over setting group callbacks. By keeping the MI DM handle as NULL, the callback is registered for a group.

Returns a GOAL_STATUS_T status.

Table: goal_miDmCbReg arguments

Arguments

Description

GOAL_MI_DM_T *pMiDm

[in] MI DM handle

GOAL_MI_DM_GROUP_T *pGroup

[in] MI DM group handle

uint32_t typeCb

callback type

GOAL_MI_DM_CB_FUNC_T funcCb

callback function

void *pPriv

callback private data

Code Block
languagec
res = goal_miDmCbReg(NULL, pMiMctc->pGroup, GOAL_MI_DM_CB_READ,
    appl_dmCbCyclicRd, NULL);

goal_miDmGroupPartsRemove - Remove all mapped partitions

This function removes the mapped partitions of a named group. Returns a GOAL_STATUS_T status.

Table: goal_miDmGroupPartsRemove arguments

Arguments

Description

uint32_t idMiDm

DM handle ID

GOAL_ID_T idGroup

Group ID

Code Block
languagec
/* remove all partitions from group */
res = goal_miDmGroupPartsRemove(APPL_DM_ID, APPL_DM_ID_GROUP);

Table of Contents