コード例 #1
0
ファイル: app.c プロジェクト: wjw890912/Power-measurement
static  void  AppTask_2 (void *p_arg)
{
	INT8U  err;
	
   	(void)p_arg;

    APP_TRACE_INFO(("AppTask_2\n\r"));

	pSecureEventFlagGrp = OSFlagCreate(0x0, &err);

    /* Enable Crypto clock */        
    CLK->AHBCLK |= CLK_AHBCLK_CRPTCKEN_Msk;

	BSP_IntVectSet(BSP_INT_ID_CRYPTO, CRYPTO_IRQHandler);
	BSP_IntEn(BSP_INT_ID_CRYPTO);
	PRNG_ENABLE_INT();

	while (1)
	{
		PRNG_Open(PRNG_KEY_SIZE_256, 0, 0);
		bsp_printf("Start PRNG...\n");
		PRNG_Start();
		OSFlagPend(pSecureEventFlagGrp, 0x1, OS_FLAG_WAIT_SET_ANY, 0, &err);
		dump_PRNG();
        OSTimeDlyHMSM(0, 0, 0, 100);
    }
}
コード例 #2
0
PUBLIC SDIO_CARD_PAL_HANDLE SDIO_Card_Pal_Open (SDIO_CARD_PAL_SLOT_E slotNo)
{
    SDIO_CARD_PAL_IRQ_DECLARE;

    SDIO_CARD_PAL_ASSERT (SDIO_CARD_PAL_SUPPORT_NUM > slotNo);	/*assert verified*/

    // 检查是否有有效的handle存在
    SDIO_CARD_PAL_DISABLE_IRQ;

    if (TRUE == s_sdioCardPalHd[slotNo].flag)
    {
        SDIO_CARD_PAL_ENABLE_IRQ;
        SDIO_CARD_PAL_ASSERT (0);	/*assert verified*/
    }

    s_sdioCardPalHd[slotNo].flag = TRUE;
    SDIO_CARD_PAL_ENABLE_IRQ;

    s_sdioCardPalHd[slotNo].MagicNum = SDIO_CARD_PAL_MAGICNUM;
#if defined (UCOS_BSD_EVENT)
    {
        INT8U err;
        s_sdioCardPalHd[slotNo].sdio_event = PNULL;
        s_sdioCardPalHd[slotNo].sdio_event = OSFlagCreate (0, &err);

        if (PNULL == s_sdioCardPalHd[slotNo].sdio_event)
        {
            SDIO_CARD_PAL_ASSERT (0);	/*assert verified*/
        }
    }
#elif defined (CARD_SDIO_EVENT)
    s_sdioCardPalHd[slotNo].sdio_event = PNULL;
    s_sdioCardPalHd[slotNo].sdio_event = SCI_CreateEvent ("SDIO_EVENT");

    if (PNULL == s_sdioCardPalHd[slotNo].sdio_event)
    {
        SDIO_CARD_PAL_ASSERT (0);	/*assert verified*/
    }

#else
    s_CardEvent = 0;

#endif
    s_sdioCardPalHd[slotNo].sdio_port = (SDHOST_HANDLE) SDHOST_Register ( (SDHOST_SLOT_NO) slotNo,_irqCardProc);

    if (0 == s_sdioCardPalHd[slotNo].sdio_port)
    {
        SDIO_CARD_PAL_ASSERT (0);	/*assert verified*/
    }
	
#ifdef DUAL_TCARD_SUPPORT
    s_sdioCardPalHd[slotNo].sdio_No = slotNo;
    s_activeslot = slotNo;
    _SlotSelect(slotNo);
#endif

    return &s_sdioCardPalHd[slotNo];

}
コード例 #3
0
ファイル: portevent_m.c プロジェクト: Liu1992/GasSub_LPC1788
/* ----------------------- Start implementation -----------------------------*/
BOOL
xMBMasterPortEventInit( void )
{ uint8_t err=OS_ERR_NONE;
	//rt_event_init(&xMasterOsEvent,"master event",RT_IPC_FLAG_PRIO);
  //  return TRUE;
	xMasterOsEvent=OSFlagCreate(0,&err);
	return TRUE;
}
コード例 #4
0
ファイル: flag_event.c プロジェクト: binhfile/stm32
int flag_event_init(flag_event_t* event){
#if defined(OS_FREERTOS)
	*event = xEventGroupCreate();
	return (*event) ? 0 : -1;
#elif defined(OS_UCOS)
	OS_ERR err;
	OSFlagCreate(event, "", 0, &err);
	return (err == OS_ERR_NONE) ? 0 : -1;
#endif
}
コード例 #5
0
bool_t osCreateEvent(OsEvent *event)
{
   OS_ERR err;

   //Create an event flag group
   OSFlagCreate(event, "EVENT", 0, &err);

   //Check whether the event flag group was successfully created
   if(err == OS_ERR_NONE)
      return TRUE;
   else
      return FALSE;
}
コード例 #6
0
/*FUNCTION**********************************************************************
 *
 * Function Name : OSA_EventCreate
 * Description   : This function is used to create a event object. Return
 * kStatus_OSA_Success if create successfully, otherwise return kStatus_OSA_Error.
 *
 *END**************************************************************************/
osa_status_t OSA_EventCreate(event_t *pEvent, osa_event_clear_mode_t clearMode)
{
    INT8U err;
    pEvent->pGroup = OSFlagCreate(0u, &err);
    if (OS_ERR_NONE == err)
    {
        pEvent->clearMode = clearMode;
        return kStatus_OSA_Success;
    }
    else
    {
        return kStatus_OSA_Error;
    }
}
コード例 #7
0
/*FUNCTION**********************************************************************
 *
 * Function Name : OSA_EventCreate
 * Description   : This function is used to create a event object. Return
 * kStatus_OSA_Success if create successfully, otherwise return kStatus_OSA_Error.
 *
 *END**************************************************************************/
osa_status_t OSA_EventCreate(event_t *pEvent, osa_event_clear_mode_t clearMode)
{
    OS_ERR err;
    OSFlagCreate(&(pEvent->group), "event", (OS_FLAGS)0, &err);
    if (OS_ERR_NONE == err)
    {
        pEvent->clearMode = clearMode;
        return kStatus_OSA_Success;
    }
    else
    {
        return kStatus_OSA_Error;
    }
}
コード例 #8
0
/*!
  ****************************************************************************
    @brief Creates a event group.

    @param[out] phEventGroup    - Pointer to a location to write the returned
                             event group ID

    @return ADI_OSAL_SUCCESS      - If event is created successfully
    @return ADI_OSAL_FAILED       - If failed to create event
    @return ADI_OSAL_CALLER_ERROR - If the call is made from an invalid location
                                    (i.e an ISR)

  Note:
      phEventGroup set to "ADI_OSAL_INVALID_EVENT_GROUP" if event creation is failed.
 *****************************************************************************/
ADI_OSAL_STATUS adi_osal_EventGroupCreate(ADI_OSAL_EVENT_HANDLE *phEventGroup)
{
    OS_FLAG_GRP* pEventNative;
    INT8U nErr;
    ADI_OSAL_STATUS eRetStatus;

#ifdef OSAL_DEBUG
    if (NULL == phEventGroup)
    {
        return(ADI_OSAL_FAILED);
    }


    if (CALLED_FROM_AN_ISR)
    {
        *phEventGroup = ADI_OSAL_INVALID_EVENT_GROUP;
        return (ADI_OSAL_CALLER_ERROR);
    }
#endif /* OSAL_DEBUG */

    /* Flags are initially all created as unset (0x0) */
    pEventNative = OSFlagCreate(0x0u, &nErr);
    switch (nErr)
    {
        case OS_ERR_NONE:
#pragma diag(push)
#pragma diag(suppress:misra_rule_11_4 : "typecasting is necessary to convert the handle type into a pointer to a useful structure")
            *phEventGroup = (ADI_OSAL_EVENT_HANDLE) pEventNative;
#pragma diag(pop)
            eRetStatus = ADI_OSAL_SUCCESS;
            break;
#ifdef OSAL_DEBUG
        case OS_ERR_CREATE_ISR:
            *phEventGroup = ADI_OSAL_INVALID_EVENT_GROUP;
            eRetStatus = ADI_OSAL_CALLER_ERROR;
            break;

        case OS_ERR_FLAG_GRP_DEPLETED:
            *phEventGroup = ADI_OSAL_INVALID_EVENT_GROUP;
            eRetStatus = ADI_OSAL_MEM_ALLOC_FAILED;
            break;
#endif
        default:
            *phEventGroup = ADI_OSAL_INVALID_EVENT_GROUP;
            eRetStatus = ADI_OSAL_FAILED;
            break;
    } /* end of switch */
    return (eRetStatus);
}
コード例 #9
0
/*
 * Create our MicroC/OS-II resources. All of the resources beginning with 
 * "SSS" are declared in this file, and created in this function.
 */
void SSSCreateOSDataStructs(void)
{
  INT8U error_code;
  
  /*
  * Create the resource for our MicroC/OS-II Queue for sending commands 
  * received on the TCP/IP socket from the SSSSimpleSocketServerTask()
  * to the LEDManagementTask().
  */
  SSSLEDCommandQ = OSQCreate(&SSSLEDCommandQTbl[0], SSS_LED_COMMAND_Q_SIZE);
  if (!SSSLEDCommandQ)
  {
     alt_uCOSIIErrorHandler(EXPANDED_DIAGNOSIS_CODE, 
     "Failed to create SSSLEDCommandQ.\n");
  }
  
 /* Create our MicroC/OS-II LED Lightshow Semaphore.  The semaphore is checked 
  * by the SSSLEDLightshowTask each time it updates 7 segment LED displays, 
  * U8 and U9.  The LEDTask grabs the semaphore away from the lightshow task to
  * toggle the lightshow off, and gives up the semaphore to turn the lightshow
  * back on.  The LEDTask does this in response to the CMD_LEDS_LIGHTSHOW
  * command sent from the SSSSimpleSocketServerTask when the user sends the 
  * toggle lightshow command over the TCPIP socket.
  */
  SSSLEDLightshowSem = OSSemCreate(1);
  if (!SSSLEDLightshowSem)
  {
     alt_uCOSIIErrorHandler(EXPANDED_DIAGNOSIS_CODE, 
                            "Failed to create SSSLEDLightshowSem.\n");
  }
  
 /*
  * Create our MicroC/OS-II LED Event Flag.  Each flag corresponds to one of
  * the LEDs on the Nios Development board, D0 - D7. 
  */   
  SSSLEDEventFlag = OSFlagCreate(0, &error_code);
  if (!SSSLEDEventFlag)
  {
     alt_uCOSIIErrorHandler(error_code, 0);
  }
}
コード例 #10
0
ファイル: ucosmind.c プロジェクト: jgambox/DCRabbit_9
void main()
{
	INT8U err;
	OSInit();
	InitDisplay();
	// create tasks with 512 byte stacks.
	OSTaskCreate(MasterTask, NULL, 512, 6);
	OSTaskCreate(UserTask,   NULL, 512, 7);

	// create mutex used by tasks.  Priority inversion
	// priority is set to 5 (1 less that highest priority
	// task).
	GuessMutex = OSMutexCreate(5, &err);
	if(err != OS_NO_ERR)
		exit(err);

	// create event flags used by tasks, initially set to 0.
	ColorFlags = OSFlagCreate(0x00, &err);
	if(err != OS_NO_ERR)
		exit(err);
	OSStart();
}
コード例 #11
0
status_t DSPI_RTOS_Init(dspi_rtos_handle_t *handle,
                        SPI_Type *base,
                        const dspi_master_config_t *masterConfig,
                        uint32_t srcClock_Hz)
{
    OS_ERR err;

    if (handle == NULL)
    {
        return kStatus_InvalidArgument;
    }

    if (base == NULL)
    {
        return kStatus_InvalidArgument;
    }

    memset(handle, 0, sizeof(dspi_rtos_handle_t));

    OSSemCreate(&handle->mutex, "DSPI", (OS_SEM_CTR)1, &err);
    if (OS_ERR_NONE != err)
    {
        return kStatus_Fail;
    }

    OSFlagCreate(&handle->event, "DSPI", (OS_FLAGS)0, &err);
    if (OS_ERR_NONE != err)
    {
        OSSemDel(&handle->mutex, OS_OPT_DEL_ALWAYS, &err);
        return kStatus_Fail;
    }

    handle->base = base;

    DSPI_MasterInit(handle->base, masterConfig, srcClock_Hz);
    DSPI_MasterTransferCreateHandle(handle->base, &handle->drv_handle, DSPI_RTOS_Callback, (void *)handle);

    return kStatus_Success;
}
コード例 #12
0
ファイル: bcr.c プロジェクト: ericzhc/pdale
/******************************************************
  Enable and initalize bar code reader
*******************************************************/
void BCR_Init(void) 
{
	enable = 1;
	INT8U err;
	
	erD_sndstr("Starting BCR update task\n\r");
	
	bcFlag = OSFlagCreate(0x00, &err);
	//ComDriverInit(BCREADER_CONFIG);
	OSTaskCreateExt(BCRUpdateTask,
                NULL,
                (OS_STK *)&BCRUpdateTaskStk[TASK_BCR_SIZE-1],
                TASK_BCR_PRIO,
                TASK_BCR_PRIO,
                (OS_STK *)&BCRUpdateTaskStk[0],
                TASK_BCR_SIZE,
                NULL,
                OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
	);

	erD_sndstr("Init done...BCR\n\r");
}
コード例 #13
0
ファイル: app.c プロジェクト: blueskycoco/ucosiii-stm32f407
/*
*********************************************************************************************************
*                                          AppObjCreate()
*
* Description : Create Application Kernel Objects.
*
* Argument(s) : none
*
* Return(s)   : none
*
* Caller(s)   : AppTaskStart()
*
* Note(s)     : none.
*********************************************************************************************************
*/
static  void  AppObjCreate (void)
{
    OS_ERR  os_err;


#if (OS_CFG_SEM_EN > 0u)
    OSSemCreate(&AppTaskObjSem,
                "Sem Test",
                 0u,
                &os_err);

    OSSemCreate(&AppTraceSem,
                "Trace Lock",
                 1u,
                &os_err);
#endif

#if (OS_CFG_MUTEX_EN > 0u)
    OSMutexCreate(&AppTaskObjMutex,
                  "Mutex Test",
                  &os_err);
#endif

#if (OS_CFG_Q_EN > 0u)
    OSQCreate(&AppTaskObjQ,
              "Queue Test",
               1,
              &os_err);
#endif

#if (OS_CFG_FLAG_EN > 0u)
    OSFlagCreate(&AppTaskObjFlag,
                 "Flag Test",
                  DEF_BIT_NONE,
                 &os_err);
#endif
}
コード例 #14
0
ファイル: tasks.c プロジェクト: ericzhc/pdale
/*******************************************************
 Creates GPS and Map related tasks
*******************************************************/
void Tasks() 
{
	INT8U err;
	InitFlag = OSFlagCreate(0x0, &err);
	// Create GPSUpdateTask
	OSTaskCreateExt(GPSUpdateTask,
					NULL,
					(OS_STK *)&GPSUpdateTaskStk[TASK_GPS_SIZE-1],
					TASK_GPS_PRIO,
					TASK_GPS_PRIO,
					(OS_STK *)&GPSUpdateTaskStk[0],
					TASK_GPS_SIZE,
					NULL,
					OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	// Create GPSSendDataTask
	OSTaskCreateExt(GPSSendDataTask,
					NULL,
					(OS_STK *)&GPSSendDataTaskTsk[TASK_GPS_SIZE-1],
					TASK_GPS_SEND_PRIO,
					TASK_GPS_SEND_PRIO,
					(OS_STK *)&GPSSendDataTaskTsk[0],
					TASK_GPS_SIZE,
					NULL,
					OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	// Create MapUpdateTask
	OSTaskCreateExt(MapUpdateTask,
					NULL,
					(OS_STK *)&MapUpdateTaskStk[TASK_MAP_SIZE-1],
					TASK_MAP_PRIO,
					TASK_MAP_PRIO,
					(OS_STK *)&MapUpdateTaskStk[0],
					TASK_MAP_SIZE,
					NULL,
					OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
					);
}
コード例 #15
0
ファイル: start_task.c プロジェクト: BearZPY/STM32-uCOSIII
//开始任务函数
void start_task(void *p_arg)
{
    OS_ERR err;
    CPU_SR_ALLOC();
    p_arg = p_arg;

    CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
    OSStatTaskCPUUsageInit(&err);  	//统计任务
#endif

#ifdef CPU_CFG_INT_DIS_MEAS_EN		//如果使能了测量中断关闭时间
    CPU_IntDisMeasMaxCurReset();
#endif

#if	OS_CFG_SCHED_ROUND_ROBIN_EN  //当使用时间片轮转的时候
    //使能时间片轮转调度功能,时间片长度为1个系统时钟节拍,既1*5=5ms
    OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);
#endif

    OS_CRITICAL_ENTER();	//进入临界区

    OSFlagCreate((OS_FLAG_GRP *)&event_flag,
                 (CPU_CHAR *)"event flag",
                 (OS_FLAGS)0x00,
                 (OS_ERR *)&err
                );
    OSTaskCreate((OS_TCB 	* )&Led0TaskTCB,
                 (CPU_CHAR	* )"led0 task",
                 (OS_TASK_PTR )led0_task,
                 (void		* )0,
                 (OS_PRIO	  )LED0_TASK_PRIO,
                 (CPU_STK   * )&LED0_TASK_STK[0],
                 (CPU_STK_SIZE)LED0_STK_SIZE/10,
                 (CPU_STK_SIZE)LED0_STK_SIZE,
                 (OS_MSG_QTY  )0,
                 (OS_TICK	  )0,
                 (void   	* )0,
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR 	* )&err);
    //创建浮点测试任务
    OSTaskCreate((OS_TCB 	* )&FloatTaskTCB,
                 (CPU_CHAR	* )"float test task",
                 (OS_TASK_PTR )float_task,
                 (void		* )0,
                 (OS_PRIO	  )FLOAT_TASK_PRIO,
                 (CPU_STK   * )&FLOAT_TASK_STK[0],
                 (CPU_STK_SIZE)FLOAT_STK_SIZE/10,
                 (CPU_STK_SIZE)FLOAT_STK_SIZE,
                 (OS_MSG_QTY  )5,
                 (OS_TICK	  )0,
                 (void   	* )0,
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR 	* )&err);
    //创建协议处理任务
    OSTaskCreate((OS_TCB 	* )&ProtocolTaskTCB,
                 (CPU_CHAR	* )"protocol task",
                 (OS_TASK_PTR )protocol_task,
                 (void		* )0,
                 (OS_PRIO	  )Protocol_TASK_PRIO,
                 (CPU_STK   * )&Protocol_TASK_STK[0],
                 (CPU_STK_SIZE)Protocol_STK_SIZE/10,
                 (CPU_STK_SIZE)Protocol_STK_SIZE,
                 (OS_MSG_QTY  )0,
                 (OS_TICK	  )0,
                 (void   	* )0,
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR 	* )&err);
    OS_CRITICAL_EXIT();	//进入临界区


    OSTaskDel(NULL,&err);
}
コード例 #16
0
ファイル: App.c プロジェクト: Vanganesha/oufffteam
/*
*********************************************************************************************************
*                                          AppCreateIPCS
*
* Description : This function creates all IPCS objects
* Arguments   : None
*********************************************************************************************************
*/
void AppCreateIPCS()
{
	INT8U perr;

    // Mutex
   	App_MutexCmdToTaskMvt = OSMutexCreate(APP_MUTEX_MVT_PRIO, &perr);
	App_MutexCmdToTaskAsser = OSMutexCreate(APP_MUTEX_ASSER_PRIO, &perr);
	if((NULL == App_MutexCmdToTaskMvt) || (NULL == App_MutexCmdToTaskAsser))
	{
		AppDebugMsg("DEBUG (App.c) : Error -> Unable to create Semaphore or Mutex\n");
		AppDebugMsg("DEBUG (App.c) : Entering in sleeping mode...\n");	
		while(OS_TRUE)		// Infinite Loop
			OSTimeDlyHMSM(1, 0, 0, 0);		
	}

#if APP_USE_DEBUG > 0
   	App_MutexUART1 = OSMutexCreate(APP_MUTEX_UART1_PRIO, &perr);
	App_MutexUART2 = OSMutexCreate(APP_MUTEX_UART2_PRIO, &perr);
#else
   	App_MutexCmdToTaskMvt = NULL;
	App_MutexCmdToTaskAsser = NULL;

#endif

#if APP_QUEUE_SENSORS_SIZE > 0
	// Create an empty queue for asser process
	AppQueueSensors = OSQCreate(AppQSensorsStk, APP_QUEUE_SENSORS_SIZE);
	if(NULL == AppQueueSensors)		// Check if Queue is well created
	{
		AppDebugMsg("DEBUG (App.c) : Error -> Unable to create AsserQueue\n");
		AppDebugMsg("DEBUG (App.c) : Entering in sleeping mode...\n");	

        while(OS_TRUE)		// Infinite Loop
			OSTimeDlyHMSM(1, 0, 0, 0);		
	}
#endif

	// Flags
	AppFlags = OSFlagCreate(APP_PARAM_APPFLAG_INITAL_VALUE, &perr);
	if(NULL == AppFlags)
	{
		AppDebugMsg("DEBUG (App.c) : Error -> Unable to create Appliction Flag\n");
		AppDebugMsg("DEBUG (App.c) : Entering in sleeping mode...\n");	

        while(OS_TRUE)		// Infinite Loop
			OSTimeDlyHMSM(1, 0, 0, 0);		
	}

	// Strategy Flags
	AppStrategyFlags = OSFlagCreate(APP_PARAM_STRATEGYFLAG_INITAL_VALUE, &perr);
	if(NULL == AppStrategyFlags)
	{
		AppDebugMsg("DEBUG (App.c) : Error -> Unable to create Strategy Flag\n");
		AppDebugMsg("DEBUG (App.c) : Entering in sleeping mode...\n");	

        while(OS_TRUE)		// Infinite Loop
			OSTimeDlyHMSM(1, 0, 0, 0);		
	}

	return;
}
コード例 #17
0
void mouse_Init()
{
	int i;
	uint8 code;
	
	REGISTER_LOG_CLIENT("MOUSE SENSOR");

	flagCalibStep = OSFlagCreate(0x00, &OSLastError);		
	LOG_TEST_OS_ERROR(OSLastError);

	ex_PushITHandler(MOUSE1_FAILURE, mouseFailureHandler);
	ex_PushITHandler(MOUSE2_FAILURE, mouseFailureHandler);
	
	mice[0].uart = CHANNEL_UART_MOUSE_1;
	mice[0].RatioKU = 1.00f;
	mice[0].RatioKV = 1.00f;
	mice[0].theta = -0.785997f;
	
	mice[0].Delta0 = 1500.0f;
	mice[0].DeltaA = 0.0f;
	
	mice[0].RX0 = -7668.8f;
	mice[0].RXA = 0.0f;
	
	mice[0].RY0 = 10150;//10565.61;
	mice[0].RYA = 0;//-3044.32*valueVTops/valueSample;
	
	
	mice[1].uart = CHANNEL_UART_MOUSE_2;
	mice[1].RatioKU = 1.00f;
	mice[1].RatioKV = 1.00f;
	mice[1].theta = -0.780678f;
	
	mice[1].Delta0 = 1499.5f;
	mice[1].DeltaA = 0.0f;
	
	mice[1].RX0 = -7741.7f;
	mice[1].RXA = 0.0f;
	
	mice[1].RY0 = -10214;//-10819.70;
	mice[1].RYA = 0;//3127.76*valueVTops/valueSample;
	
	corrLR = -6308*valueVTops/valueSample;
	corrRR = -6301*valueVTops/valueSample;
	
	for(i=0; i<MOUSE_NUMBER; i++)
	{
		//init mouse uart
		uart_Init(mice[i].uart, MOUSE_UART_BAUDRATE);
	
		//reset mice values
		mice[i].error = 0;
		mice[i].calibU = 0;
		mice[i].calibV = 0;	
		mice[i].nbGoodMessage = 0;
		mice[i].nbCksmError = 0;
		mice[i].nbUnkError = 0;
		mice[i].calibAlpha1 = 0.0f;
		mice[i].calibAlpha2 = 0.0f;
		mice[i].calibDelta = 0.0f;
		mice[i].cosTheta = cosf(mice[i].theta);
		mice[i].sinTheta = sinf(mice[i].theta);
	
		sendCalibParameters(i);
	}
}