summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordragonprevost <dragon@dkp.io>2018-10-23 13:19:12 -0700
committerdragonprevost <dragon@dkp.io>2018-10-23 13:19:12 -0700
commitb6a15bc57c5f2586f747de646dd9deaa4a6e5bf2 (patch)
tree8767da2fae71ef8ea9a52a355f9d1d2f820e80b7
parent7e731316021119dd708cd45f158df90007542636 (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
-rw-r--r--motionMonitor/motionMonitor.c39
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");
}
}