Lines Matching refs:context
89 static void Start( MPDSContext* context );
90 static void Stop( MPDSContext* context );
91 static void SignalDataSet( MPDSContext* context );
92 static s32 Step( MPDSContext* context, const void* sendData, MPDSDataSet* recvDataSet, BOOL isSync …
93 static void ReceiveData(MPDSContext *context, u32 aid, u8 *data);
94 static void SendDataSet(MPDSContext *context, BOOL delayed);
95 static u8* GetSharedDataAddress( const MPDSContext *context, u32 aidBits, u16 *receiveBuf, u32 aid);
100 #define MPDSiLOG_AIDBITS_BEGIN( context, index ) { u16 __prev_aidbits = (context)->ds[(index)].aid…
101 …PDSiLOG_AIDBITS_END( context, index ) MPDSiLog( DETAIL_AIDBITS, "ds[%d].aidBits = %04x -> %04x", …
103 #define MPDSiLOG_AIDBITS_BEGIN( context, index ) ((void)0) argument
104 #define MPDSiLOG_AIDBITS_END( context, index ) ((void)0) argument
117 MPDSInit( MPDSContext* context, const MPDSConfig* config ) in MPDSInit() argument
127 if ( context == NULL || config == NULL ) in MPDSInit()
133 (void)NETMemSet( context, 0, sizeof(MPDSContext) ); in MPDSInit()
134 (void)NETMemCpy( &context->config, config, sizeof(MPDSConfig) ); in MPDSInit()
137 context->config.aidBits = aidBits; in MPDSInit()
159 OSInitThreadQueue(&context->readThreadQueue); in MPDSInit()
163 context->stationNumber = count; in MPDSInit()
164 context->dataSetLength = (u16)(context->config.dataLength * count); in MPDSInit()
166 if (context->dataSetLength > MPDS_DATA_SIZE) in MPDSInit()
169 context->config.aidBits = 0; in MPDSInit()
173 context->dataSetLength += 4; // aidBits, receivedBits in MPDSInit()
176 context->state = MPDS_STATE_READY; in MPDSInit()
181 void Start( MPDSContext* context ) in Start() argument
183 OSWakeupThread(&context->readThreadQueue); // Just in case in Start()
185 if ( context->config.isParent ) in Start()
191 MPDSiLOG_AIDBITS_BEGIN( context, i ); in Start()
192 context->ds[i].aidBits = MPHToMP16(0x0001); in Start()
193 MPDSiLOG_AIDBITS_END( context, i ); in Start()
197 for (i = 0; i < ((context->config.isDoubleMode == TRUE) ? 2 : 1); i++) in Start()
199 context->writeIndex = GetNextIndex(context->writeIndex); in Start()
200 context->seqNum[i] = 0xffff; in Start()
201 context->sendIndex = GetNextIndex(context->sendIndex); in Start()
202 SignalDataSet(context); in Start()
206 context->state = MPDS_STATE_START; in Start()
209 void Stop( MPDSContext* context ) in Stop() argument
211 context->state = MPDS_STATE_READY; in Stop()
213 OSWakeupThread(&context->readThreadQueue); in Stop()
216 void SignalDataSet( MPDSContext* context ) in SignalDataSet() argument
218 OSWakeupThread(&context->readThreadQueue); in SignalDataSet()
220 MPPortCallback cb = context->config.mpdsCallback; in SignalDataSet()
223 MPPortCallbackInfo* info = &context->tmpCallbackInfo; in SignalDataSet()
227 info->port = context->config.port; in SignalDataSet()
228 info->userData = context; in SignalDataSet()
242 MPDSSetupPortConfig( const MPDSContext* context, MPConfig* mpconfig ) in MPDSSetupPortConfig() argument
245 if (context == NULL || mpconfig == NULL) in MPDSSetupPortConfig()
251 if ( context->config.isParent ) in MPDSSetupPortConfig()
253 …MPSetPortConfigEx( mpconfig, context->config.port, ReceiveCallback_Parent, context->config.priorit… in MPDSSetupPortConfig()
258 …MPSetPortConfigEx( mpconfig, context->config.port, ReceiveCallback_Child, context->config.priority… in MPDSSetupPortConfig()
273 MPDSStart( MPDSContext* context )
276 if (context == NULL)
282 if ( context->config.isParent )
290 … context->ds[i].aidBits = MPHToMP16((u16)(context->config.aidBits & (mpReadyBits | 0x0001)));
294 for (i = 0; i < ((context->config.isDoubleMode == TRUE) ? 2 : 1); i++)
298 MPDSiTrace( "send ds[%d] to aids %08x", i, (context->config.aidBits & mpReadyBits) );
299 context->writeIndex = GetNextIndex(context->writeIndex);
301 MPSendAsync( &context->ds[i], context->dataSetLength,
302 (u16)(context->config.aidBits & mpReadyBits), context->config.port,
303 NULL, SetDataCallback, (void*)context );
307 context->state = MPDS_STATE_ERROR;
316 context->sendIndex = (u16)(MPDS_DATASET_NUM - 1);
330 MPDSStop( MPDSContext* context )
344 MPDSStep( MPDSContext* context, const void* sendData, MPDSDataSet* recvDataSet ) in MPDSStep() argument
346 return Step( context, sendData, recvDataSet, TRUE ); in MPDSStep()
358 MPDSTryStep( MPDSContext* context, const void* sendData, MPDSDataSet* recvDataSet ) in MPDSTryStep() argument
360 return Step( context, sendData, recvDataSet, FALSE ); in MPDSTryStep()
364 Step( MPDSContext* context, const void* sendData, MPDSDataSet* recvDataSet, BOOL isSync ) in Step() argument
371 if ( context == NULL || sendData == NULL || recvDataSet == NULL ) in Step()
378 state = context->state; in Step()
392 if ( context->config.isParent ) in Step()
405 context->state = MPDS_STATE_START; in Step()
409 oldWI = GetPrevIndex(context->writeIndex); in Step()
410 … MPDSiTrace( "resend ds[%d] to aids %08x", oldWI, (context->config.aidBits & mpReadyBits) ); in Step()
412 MPSendAsync( &context->ds[oldWI], context->dataSetLength, in Step()
413 (u16)(context->config.aidBits & mpReadyBits), context->config.port, in Step()
414 NULL, SetDataCallback, (void*)context ); in Step()
418 context->state = MPDS_STATE_ERROR; in Step()
423 while ( context->state == MPDS_STATE_START ) in Step()
426 if (context->readIndex != context->sendIndex) in Step()
431 context->writeIndex, context->readIndex, context->sendIndex, in Step()
432 context->seqNum[context->readIndex]); in Step()
434 MPDSiLOG_AIDBITS_BEGIN( context, context->readIndex ); in Step()
435 …context->ds[context->readIndex].aidBits |= MPHToMP16(0x0001); // The lowest bit in the aidBits in… in Step()
436 MPDSiLOG_AIDBITS_END( context, context->readIndex ); in Step()
437 (void)NETMemCpy(recvDataSet, &context->ds[context->readIndex], sizeof(MPDSDataSet)); in Step()
438 context->currentSeqNum = context->seqNum[context->readIndex]; in Step()
439 context->readIndex = GetNextIndex(context->readIndex); in Step()
443 if (context->config.isDoubleMode == FALSE && mpReadyBits != 0 in Step()
444 && context->ds[context->writeIndex].aidBits == MPHToMP16(0x0001)) in Step()
458 OSSleepThread(&context->readThreadQueue); in Step()
465 if ( context->state != MPDS_STATE_START ) in Step()
471 SendDataSet(context, FALSE); in Step()
476 MPDSiTrace("send data : write: %d, read: %d, send: %d", context->writeIndex, in Step()
477 context->readIndex, context->sendIndex); in Step()
479 …ReceiveData(context, 0, (u8 *)sendData); // Remove const because chained rewrite past here i… in Step()
481 if (context->config.isDoubleMode == FALSE) in Step()
486 SendDataSet(context, delayed); in Step()
500 context->state = MPDS_STATE_START; in Step()
505 while ( context->state == MPDS_STATE_START ) in Step()
508 if (context->readIndex != context->writeIndex) in Step()
513 if (!(context->ds[context->readIndex].aidBits & MPHToMP16(0x0001))) in Step()
515 context->ds[context->readIndex].aidBits |= MPHToMP16(0x0001); in Step()
522 context->writeIndex, context->readIndex, context->sendIndex, in Step()
523 context->seqNum[context->readIndex]); in Step()
524 … (void)NETMemCpy(recvDataSet, &context->ds[context->readIndex], sizeof(MPDSDataSet)); in Step()
525 context->currentSeqNum = context->seqNum[context->readIndex]; in Step()
526 context->readIndex = GetNextIndex(context->readIndex); in Step()
535 OSSleepThread(&context->readThreadQueue); in Step()
542 if ( context->state != MPDS_STATE_START ) in Step()
553 …u16 *buf = (u16 *)(((u8 *)&context->ds[context->sendIndex]) + 32); // 32-byte alignment is requ… in Step()
555 MPDSiTrace("send data : write: %d, read: %d, send: %d", context->writeIndex, in Step()
556 context->readIndex, context->sendIndex); in Step()
558 (void)NETMemCpy(buf, sendData, context->config.dataLength); in Step()
560 MPSendAsync( buf, context->dataSetLength, in Step()
561 context->config.aidBits, context->config.port, in Step()
562 NULL, SetDataCallback, (void*)context ); in Step()
563 context->sendIndex = GetNextIndex(context->sendIndex); in Step()
564 SignalDataSet(context); in Step()
568 context->state = MPDS_STATE_ERROR; in Step()
586 const u8* MPDSGetData( const MPDSContext* context, const MPDSDataSet* dataSet, u32 aid ) in MPDSGetData() argument
593 if (context == NULL || dataSet == NULL) in MPDSGetData()
613 return GetSharedDataAddress(context, aidBits, (u16*)dataSet->data, aid); in MPDSGetData()
628 MPDSContext *context = (MPDSContext *)info->userData; in SetDataCallback() local
630 if ( context == NULL ) in SetDataCallback()
639 if ( context->config.isParent ) in SetDataCallback()
642 MPDSiTrace("sent ds : write: %d, read: %d, send: %d", context->writeIndex, in SetDataCallback()
643 context->readIndex, context->sendIndex); in SetDataCallback()
645 context->seqNum[context->sendIndex] = (u16)(info->dataSent.seqNo >> 1); in SetDataCallback()
646 context->sendIndex = GetNextIndex(context->sendIndex); in SetDataCallback()
647 SignalDataSet(context); in SetDataCallback()
653 MPDSiTrace("sent data : write: %d, read: %d, send: %d", context->writeIndex, in SetDataCallback()
654 context->readIndex, context->sendIndex); in SetDataCallback()
662 context->state = MPDS_STATE_ERROR; in SetDataCallback()
678 MPDSContext *context = (MPDSContext *)info->userData; in ReceiveCallback_Parent() local
680 if (context == NULL) in ReceiveCallback_Parent()
693 ReceiveData(context, info->dataReceived.fromAid, info->dataReceived.data); in ReceiveCallback_Parent()
694 SendDataSet(context, FALSE); in ReceiveCallback_Parent()
699 SendDataSet(context, FALSE); // Should not be required in ReceiveCallback_Parent()
701 MPPortCallback cb = context->config.mpdsCallback; in ReceiveCallback_Parent()
717 writeIndex = context->writeIndex; in ReceiveCallback_Parent()
718 MPDSiLOG_AIDBITS_BEGIN( context, writeIndex ); in ReceiveCallback_Parent()
719 context->ds[writeIndex].aidBits &= MPHToMP16((u16)~aidBit); in ReceiveCallback_Parent()
720 MPDSiLOG_AIDBITS_END( context, writeIndex ); in ReceiveCallback_Parent()
721 if (context->config.isDoubleMode == TRUE) in ReceiveCallback_Parent()
723 MPDSiLOG_AIDBITS_BEGIN( context, GetNextIndex(writeIndex) ); in ReceiveCallback_Parent()
724 context->ds[GetNextIndex(writeIndex)].aidBits &= MPHToMP16((u16)~aidBit); in ReceiveCallback_Parent()
725 MPDSiLOG_AIDBITS_END( context, GetNextIndex(writeIndex) ); in ReceiveCallback_Parent()
728 SendDataSet(context, FALSE); in ReceiveCallback_Parent()
729 if (context->config.isDoubleMode == TRUE) in ReceiveCallback_Parent()
731 SendDataSet(context, FALSE); in ReceiveCallback_Parent()
735 MPPortCallback cb = context->config.mpdsCallback; in ReceiveCallback_Parent()
747 MPPortCallback cb = context->config.mpdsCallback; in ReceiveCallback_Parent()
753 if (context->config.isAutoStart) in ReceiveCallback_Parent()
755 Start(context); in ReceiveCallback_Parent()
761 if (context->config.isAutoStart) in ReceiveCallback_Parent()
763 Stop(context); in ReceiveCallback_Parent()
766 MPPortCallback cb = context->config.mpdsCallback; in ReceiveCallback_Parent()
779 context->state = MPDS_STATE_ERROR; in ReceiveCallback_Parent()
794 static void ReceiveData(MPDSContext* context, u32 aid, u8* data) in ReceiveData() argument
798 MPDSiTrace("recv data%d: write: %d, read: %d, send: %d", aid, context->writeIndex, in ReceiveData()
799 context->readIndex, context->sendIndex); in ReceiveData()
802 if (context->config.aidBits & aidBit) in ReceiveData()
808 if (!(context->ds[context->writeIndex].aidBits & MPHToMP16(aidBit))) in ReceiveData()
810 if (context->config.isDoubleMode == TRUE) in ReceiveData()
814 writeIndex = GetNextIndex(context->writeIndex); in ReceiveData()
815 if (!(context->ds[writeIndex].aidBits & MPHToMP16(aidBit))) in ReceiveData()
832 writeIndex = context->writeIndex; in ReceiveData()
835 … buf = GetSharedDataAddress(context, context->config.aidBits, context->ds[writeIndex].data, aid); in ReceiveData()
838 (void)NETMemCpy(buf, data, context->config.dataLength); in ReceiveData()
843 (void)NETMemSet(buf, 0, context->config.dataLength); in ReceiveData()
848 MPDSiLOG_AIDBITS_BEGIN( context, writeIndex ); in ReceiveData()
849 context->ds[writeIndex].aidBits &= MPHToMP16((u16)~aidBit); in ReceiveData()
850 MPDSiLOG_AIDBITS_END( context, writeIndex ); in ReceiveData()
852 context->ds[writeIndex].receivedBits |= MPHToMP16(aidBit); in ReceiveData()
867 void SendDataSet(MPDSContext *context, BOOL delayed) in SendDataSet() argument
874 if (context->ds[context->writeIndex].aidBits == MPHToMP16(0)) in SendDataSet()
880 MPDSiTrace("send ds : write: %d, read: %d, send: %d", context->writeIndex, in SendDataSet()
881 context->readIndex, context->sendIndex); in SendDataSet()
884 oldWI = context->writeIndex; in SendDataSet()
886 if (context->config.isDoubleMode == TRUE) in SendDataSet()
894 ASSERT(newWI != context->readIndex && resetWI != context->readIndex); in SendDataSet()
896 (void)NETMemSet(&context->ds[resetWI], 0, sizeof(MPDSDataSet)); in SendDataSet()
897 MPDSiLOG_AIDBITS_BEGIN( context, resetWI ); in SendDataSet()
898 … context->ds[resetWI].aidBits = MPHToMP16((u16)(context->config.aidBits & (mpReadyBits | 0x0001))); in SendDataSet()
899 MPDSiLOG_AIDBITS_END( context, resetWI ); in SendDataSet()
900 context->writeIndex = newWI; in SendDataSet()
901 MPDSiLOG_AIDBITS_BEGIN( context, oldWI ); in SendDataSet()
902 …context->ds[oldWI].aidBits = MPHToMP16((u16)context->config.aidBits); // Enter the original… in SendDataSet()
906 context->ds[oldWI].aidBits &= MPHToMP16((u16)~0x0001); in SendDataSet()
908 MPDSiLOG_AIDBITS_END( context, oldWI ); in SendDataSet()
911 MPSendAsync( &context->ds[oldWI], context->dataSetLength, in SendDataSet()
912 (u16)(context->config.aidBits & mpReadyBits), context->config.port, in SendDataSet()
913 NULL, SetDataCallback, (void*)context ); in SendDataSet()
917 context->state = MPDS_STATE_ERROR; in SendDataSet()
940 GetSharedDataAddress( const MPDSContext *context, u32 aidBits, u16 *receiveBuf, u32 aid) in GetSharedDataAddress() argument
950 offset = context->config.dataLength * count; in GetSharedDataAddress()