Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions embedded/common/app/algorithm_t.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
/*--------------------------------------------------------------------*\
| E X T E R N A L V A R I A B L E S & F U N C T I O N S
\*--------------------------------------------------------------------*/
osMutexDef(mutexCritSection);
osMutexId mutex_id;

/*--------------------------------------------------------------------*\
| P U B L I C V A R I A B L E S D E F I N I T I O N S
Expand Down Expand Up @@ -247,8 +249,6 @@ static const OSP_Library_Version_t* version;
static ResultHandle_t _outSensorHandles[NUM_ANDROID_SENSOR_TYPE]; // Android Sensors
static ResultHandle_t _outPSensorHandles[NUM_PRIVATE_SENSOR_TYPE]; // Private Sensors

static OS_MUT mutexCritSection;

/*--------------------------------------------------------------------*\
| F O R W A R D F U N C T I O N D E C L A R A T I O N S
\*--------------------------------------------------------------------*/
Expand Down Expand Up @@ -277,12 +277,12 @@ SystemDescriptor_t gSystemDesc =
**********************************************************************/
__inline void EnterCriticalSection(void)
{
os_mut_wait( mutexCritSection, OS_WAIT_FOREVER );
osMutexWait(mutex_id,osWaitForever);
}

__inline void ExitCriticalSection(void)
{
os_mut_release( mutexCritSection );
osMutexRelease(mutex_id);
}


Expand Down Expand Up @@ -760,7 +760,6 @@ static OSP_STATUS_t SensorControlActivate( SensorControl_t *pControl)
{
MessageBuffer *pSendMsg = NULLP;
InputSensor_t sensorType;
InputSensorHandle_t Handle;

if ( pControl == NULL )
return OSP_STATUS_NULL_POINTER;
Expand Down Expand Up @@ -825,6 +824,9 @@ ASF_TASK void AlgorithmTask (ASF_TASK_ARG)
OSP_GetLibraryVersion(&version);
D1_printf("OSP Version: %s\r\n", version->VersionString);

/* Initialize the mutex */
mutex_id = osMutexCreate(osMutex(mutexCritSection));

OSP_Status = OSP_Initialize(&gSystemDesc);
ASF_assert_msg(OSP_STATUS_OK == OSP_Status, "OSP_Initialize Failed");
OSP_SetCalibrationConfig( 0x1); // disable rotational cal.
Expand Down Expand Up @@ -909,6 +911,7 @@ ASF_TASK void AlgorithmTask (ASF_TASK_ARG)
D1_printf("Alg-FG:!!!UNHANDLED MESSAGE:%d!!!\r\n", rcvMsg->msgId);
break;
}
ASFDeleteMessage( ALGORITHM_TASK_ID, &rcvMsg );
#ifdef DEBUG_TEST_SENSOR_SUBSCRIPTION
// Testing subscribe and unsubscribe sensors
DebugTestSensorSubscription();
Expand Down Expand Up @@ -952,6 +955,7 @@ ASF_TASK void AlgBackGndTask (ASF_TASK_ARG)
D1_printf("Alg-BG:!!!UNHANDLED MESSAGE:%d!!!\r\n", rcvMsg->msgId);
break;
}
ASFDeleteMessage( ALG_BG_TASK_ID, &rcvMsg );
}
}

Expand Down
19 changes: 15 additions & 4 deletions embedded/common/app/cmdhandler_t.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ static uint8_t SerialRead( PortInfo *pPort, int8_t *pBuff, uint16_t length, uint
uint32_t readIdx;
uint16_t bytesRead = 0;
uint8_t retVal = APP_OK;
uint16_t evtFlags = 0;
osEvent evtFlags;
evtFlags.value.v=0;

if ((pBuff == NULL) || (length == 0) || (length > RX_BUFFER_SIZE))
{
Expand All @@ -91,8 +92,18 @@ static uint8_t SerialRead( PortInfo *pPort, int8_t *pBuff, uint16_t length, uint
((pPort->rxReadIdx + 1) % RX_BUFFER_SIZE))
{
/* Wait here for ISR event */
os_evt_wait_or( UART_CMD_RECEIVE | UART_CRLF_RECEIVE, EVT_WAIT_FOREVER );
evtFlags = os_evt_get();
osThreadId myId = osThreadGetId();
while(1){
evtFlags = osSignalWait(UART_CMD_RECEIVE,200);
if (evtFlags.status == osEventTimeout){
evtFlags = osSignalWait(UART_CRLF_RECEIVE,200);
}
if (evtFlags.status == osEventSignal){
break;
}
}
osSignalClear(myId,UART_CMD_RECEIVE);
osSignalClear(myId,UART_CRLF_RECEIVE);
}
else
{
Expand All @@ -105,7 +116,7 @@ static uint8_t SerialRead( PortInfo *pPort, int8_t *pBuff, uint16_t length, uint
}
pBuff[bytesRead++] = pPort->rxBuffer[readIdx];
pPort->rxReadIdx = readIdx;
if ( evtFlags & UART_CRLF_RECEIVE )
if ( evtFlags.value.signals & UART_CRLF_RECEIVE )
{
break;
}
Expand Down
Loading