Example #1
0
static void rt_test_005_006_execute(void) {
  binary_semaphore_t bsem;
  msg_t msg;

  /* [5.6.1] Creating a binary semaphore in "taken" state, the state is
     checked.*/
  test_set_step(1);
  {
    chBSemObjectInit(&bsem, true);
    test_assert_lock(chBSemGetStateI(&bsem) == true, "not taken");
  }

  /* [5.6.2] Resetting the binary semaphore in "taken" state, the state
     must not change.*/
  test_set_step(2);
  {
    chBSemReset(&bsem, true);
    test_assert_lock(chBSemGetStateI(&bsem) == true, "not taken");
  }

  /* [5.6.3] Starting a signaler thread at a lower priority.*/
  test_set_step(3);
  {
    threads[0] = chThdCreateStatic(wa[0], WA_SIZE,
                                   chThdGetPriorityX()-1, thread4, &bsem);
  }

  /* [5.6.4] Waiting for the binary semaphore to be signaled, the
     semaphore is expected to be taken.*/
  test_set_step(4);
  {
    msg = chBSemWait(&bsem);
    test_assert_lock(chBSemGetStateI(&bsem) == true, "not taken");
    test_assert(msg == MSG_OK, "unexpected message");
  }

  /* [5.6.5] Signaling the binary semaphore, checking the binary
     semaphore state to be "not taken" and the underlying counter
     semaphore counter to be one.*/
  test_set_step(5);
  {
    chBSemSignal(&bsem);
    test_assert_lock(chBSemGetStateI(&bsem) ==false, "still taken");
    test_assert_lock(chSemGetCounterI(&bsem.sem) == 1, "unexpected counter");
  }

  /* [5.6.6] Signaling the binary semaphore again, the internal state
     must not change from "not taken".*/
  test_set_step(6);
  {
    chBSemSignal(&bsem);
    test_assert_lock(chBSemGetStateI(&bsem) == false, "taken");
    test_assert_lock(chSemGetCounterI(&bsem.sem) == 1, "unexpected counter");
  }
}
Example #2
0
int motorRightActive(void){
	int ret;
	chSysLock();
	ret = chBSemGetStateI(&motor_right_sem);
	chSysUnlock();
	return ret;
}
Example #3
0
File: cmdadc.c Project: J-L/BluC
void adcCallBack(ADCDriver *adcp, adcsample_t *buffer, size_t n)
{
/*	if (samples == buffer) 
	{
		nx += n;
  	}
	else 
	{
		ny += n;
	}
*/
		chSysLockFromIsr();
		if (chBSemGetStateI(&outputResponseDataReady))
		{
			outputResponseData.caller =HW_ADC;
			outputResponseData.adcOutputValues = &samples;
			outputResponseData.numberOfValues =n;
			chBSemResetI(&outputResponseDataReady, FALSE);
		}
		chSysUnlockFromIsr();
}
Example #4
0
bool BinarySemaphore::getStateI(void) {

    return (bool)chBSemGetStateI(&bsem);
}