

#include <nitro/wm.h>
WMErrCode WM_StartDataSharing(
WMDataSharingInfo* dsInfo ,
u16 port ,
u16 aidBitmap ,
u16 dataLength ,
BOOL doubleMode
);
dsInfo |
Pointer to the data sharing information structure. The buffer must separately allocate each group that performs data sharing. Because the buffer is cache-controlled, it must be 32-byte aligned. |
port |
Port number that performs data sharing. Use a value between 0 and 15. |
aidBitmap |
Poll map of the AID of the terminal that performs data sharing. When data sharing with the maximum 16 units, it is 0xFFFF. |
dataLength |
Data length for one child to share. This must be a byte length that is a multiple of 2. |
doubleMode |
TRUE for using data sharing in every frame in the mode that executes one MP communication per frame. |
Returns the results of the WMErrCode enumerated type process.
Initializes data sharing. This function can be run when the WM is in either the MP_PARENT state or the MP_CHILD state. This is a synchronous function that promptly returns the WM_ERRCODE_SUCCESS return value when the process succeeds.
Be sure to call WM_StartDataSharing immediately after WM_StartMP. Processing and communication does not occur regularly simply by calling this function. Processing is started by calling the WM_StepDataSharing function. For parents, it is possible to perform parallel data sharing for multiple groups. Prepare the WMDataSharingInfo structure for each group and call this function multiple times for different port numbers. You cannot specify a value (number of group terminals performing data sharing × shared data size) that exceeds the permitted range from the length limit (508 bytes) of data that the parent can send at once. When a value of TRUE is specified in the doubleMode argument, the value that can be obtained with the WM_StepDataSharing function will be the value that was set by the WM_StepDataSharing function two calls earlier. WM_StepDataSharing can be called for each round of MP communication. When a value of FALSE is specified, it is possible to get the value that was specified immediately beforehand, but it requires at least two intervals of MP communications for WM_StepDataSharing to succeed.
For the mpFreq argument of WM_StartMP and the parameters of WM_StepDataSharing, the data sharing success interval and communication delay of shared data correspond as shown below.
| mpFreq | doubleMode | Data Sharing Intervals | Delay | Comments |
| 1 | TRUE |
Every frame | 2 frames | If doubleMode is set to TRUE, it adds one set of buffering, and the delay increases. |
| 2 or more, or 0 (continuous communication mode) | FALSE |
Every frame | 1 frame | During execution more than 2 rounds of MP communication per frame, data can be shared in every frame even when doubleMode is set to FALSE. However, it is more likely to cause errors and increase power consumption, so use it with caution. |
| 1 | FALSE |
2 or more frames | 2 or more frames | When data sharing is executed at intervals of 2 or more frames, doubleMode can be FALSE even if mpFreq is 1. Therefore, the delay time equals the data sharing interval. |
WM_EndDataSharing
WM_StepDataSharing
WMPort
2005/03/02 Added description of allowable range for port argument.
2004/10/25 Changed maximum value of shared data to 508 bytes.
2004/10/22 Changed return value type.
2004/09/25 Added and revised Description.
2004/08/31 Added doubleMode to Arguments.
2004/08/11 Initial version.
CONFIDENTIAL