diff options
author | dragonprevost <dragon@dkp.io> | 2018-10-23 13:19:12 -0700 |
---|---|---|
committer | dragonprevost <dragon@dkp.io> | 2018-10-23 13:19:12 -0700 |
commit | b6a15bc57c5f2586f747de646dd9deaa4a6e5bf2 (patch) | |
tree | 8767da2fae71ef8ea9a52a355f9d1d2f820e80b7 /motionMonitor/motionMonitor.c | |
parent | 7e731316021119dd708cd45f158df90007542636 (diff) |
Fixed changes stated in previous pull request, semaphore -> mutex, LE_OK check in getSuddenImpact, variable rename, removal of LE_ASSERT, thread && mutex init check
Diffstat (limited to 'motionMonitor/motionMonitor.c')
-rw-r--r-- | motionMonitor/motionMonitor.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/motionMonitor/motionMonitor.c b/motionMonitor/motionMonitor.c index 04ae52d..092d4a3 100644 --- a/motionMonitor/motionMonitor.c +++ b/motionMonitor/motionMonitor.c @@ -48,16 +48,12 @@ le_result_t brnkl_motion_getCurrentAcceleration( char path[256]; double scaling = 0.0; - int pathLen = snprintf(path, sizeof(path), FormatStr, AccType, CompScale); - LE_ASSERT(pathLen < sizeof(path)); r = ioutil_readDoubleFromFile(path, &scaling); if (r != LE_OK) { goto done; } - pathLen = snprintf(path, sizeof(path), FormatStr, AccType, CompX); - LE_ASSERT(pathLen < sizeof(path)); r = ioutil_readDoubleFromFile(path, xAcc); if (r != LE_OK) { @@ -65,8 +61,6 @@ le_result_t brnkl_motion_getCurrentAcceleration( } *xAcc *= scaling; - pathLen = snprintf(path, sizeof(path), FormatStr, AccType, CompY); - LE_ASSERT(pathLen < sizeof(path)); r = ioutil_readDoubleFromFile(path, yAcc); if (r != LE_OK) { @@ -74,8 +68,6 @@ le_result_t brnkl_motion_getCurrentAcceleration( } *yAcc *= scaling; - pathLen = snprintf(path, sizeof(path), FormatStr, AccType, CompZ); - LE_ASSERT(pathLen < sizeof(path)); r = ioutil_readDoubleFromFile(path, zAcc); *zAcc *= scaling; @@ -85,7 +77,7 @@ done: } void recordImpact(double* xAcc, double* yAcc, double* zAcc){ - timestamps[totalImpacts] = (unsigned long)time(NULL); + timestamps[totalImpacts] = GetCurrentTimestamp(); xAccImpact[totalImpacts] = *xAcc; yAccImpact[totalImpacts] = *yAcc; zAccImpact[totalImpacts] = *zAcc; @@ -101,12 +93,22 @@ le_result_t brnkl_motion_getSuddenImpact(double* xAcc, size_t *xSize, if(!totalImpacts) LE_INFO("No Sudden Impacts to Report"); + //check + if( + totalImpacts > sizeof(xAccImpact) || + totalImpacts > sizeof(yAccImpact) || + totalImpacts > sizeof(zAccImpact) + ) + return LE_FORMAT_ERROR; + *xSize = *ySize = *zSize = totalImpacts; - xAcc = xAccImpact; - yAcc = yAccImpact; - zAcc = zAccImpact; - + for(int i = 0; i < totalImpacts; i++){ + xAcc[i] = xAccImpact[i]; + yAcc[i] = yAccImpact[i]; + zAcc[i] = zAccImpact[i]; + } + totalImpacts = 0; return LE_OK; @@ -121,10 +123,9 @@ void *impactMonitor(void * ptr){ for(;;){ brnkl_motion_getCurrentAcceleration(&x, &y, &z); - double euclidian = sqrt(x*x + y*y + z*z); + double impactMagnitude = sqrt(x*x + y*y + z*z); - if(euclidian > impactThreshold){ - LE_INFO("euclidian : %f", euclidian); + if(impactMagnitude > impactThreshold){ //3. add x, y, z to impact array pthread_mutex_lock(&impactMutex); recordImpact(&x, &y, &z); @@ -145,10 +146,10 @@ void initThread(){ mutx = pthread_mutex_init(&impactMutex, NULL); thread = pthread_create( &impactThread, NULL, impactMonitor, NULL); LE_INFO("mutexResult: %d", mutx); - if(thread && mutx){ - LE_INFO("Reader Thread Created"); - }else{ + if(thread || mutx){ LE_ERROR("Reader Thread or Mutex Creation Failed"); + }else{ + LE_INFO("Reader Thread Created"); } } |