Exemplo n.º 1
0
INT8U  OSMemNameGet (OS_MEM *pmem, INT8U *pname, INT8U *perr)
{
    INT8U      len;
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif



#if OS_ARG_CHK_EN > 0
    if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
        return (0);
    }
    if (pmem == (OS_MEM *)0) {                   /* Is 'pmem' a NULL pointer?                          */
        *perr = OS_ERR_MEM_INVALID_PMEM;
        return (0);
    }
    if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
        *perr = OS_ERR_PNAME_NULL;
        return (0);
    }
#endif
    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
        *perr = OS_ERR_NAME_GET_ISR;
        return (0);
    }
    OS_ENTER_CRITICAL();
    len   = OS_StrCopy(pname, pmem->OSMemName);  /* Copy name from OS_MEM                              */
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_NONE;
    return (len);
}
Exemplo n.º 2
0
INT8U  OSMemNameGet (OS_MEM *pmem, INT8U *pname, INT8U *err)
{
    INT8U      len;
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif



    OS_ENTER_CRITICAL();
#if OS_ARG_CHK_EN > 0
    if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
        OS_EXIT_CRITICAL();
        return (0);
    }
    if (pmem == (OS_MEM *)0) {                   /* Is 'pmem' a NULL pointer?                          */
        OS_EXIT_CRITICAL();                      /* Yes                                                */
        *err = OS_MEM_INVALID_PMEM;
        return (0);
    }
    if (pname == (INT8U *)0) {                    /* Is 'pname' a NULL pointer?                         */
        OS_EXIT_CRITICAL();                      /* Yes                                                */
        *err = OS_ERR_PNAME_NULL;
        return (0);
    }
#endif
    len  = OS_StrCopy(pname, pmem->OSMemName);   /* Copy name from OS_MEM                              */
    OS_EXIT_CRITICAL();
    *err = OS_NO_ERR;
    return (len);
}
Exemplo n.º 3
0
INT8U OSFlagNameGet(OS_FLAG_GRP * pgrp, INT8U * pname, INT8U * perr)
{
  INT8U len;
#if OS_CRITICAL_METHOD == 3     /* Allocate storage for CPU status register           */
  OS_CPU_SR cpu_sr = 0;
#endif

#if OS_ARG_CHK_EN > 0
  if (perr == (INT8U *) 0) {    /* Validate 'perr'                                    */
    return (0);
  }
  if (pgrp == (OS_FLAG_GRP *) 0) {      /* Is 'pgrp' a NULL pointer?                          */
    *perr = OS_ERR_FLAG_INVALID_PGRP;
    return (0);
  }
  if (pname == (INT8U *) 0) {   /* Is 'pname' a NULL pointer?                         */
    *perr = OS_ERR_PNAME_NULL;
    return (0);
  }
#endif
  if (OSIntNesting > 0) {       /* See if trying to call from an ISR                  */
    *perr = OS_ERR_NAME_GET_ISR;
    return (0);
  }
  OS_ENTER_CRITICAL();
  if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_EVENT_TYPE;
    return (0);
  }
  len = OS_StrCopy(pname, pgrp->OSFlagName);    /* Copy name from OS_FLAG_GRP                         */
  OS_EXIT_CRITICAL();
  *perr = OS_ERR_NONE;
  return (len);
}
Exemplo n.º 4
0
// CODE_SECTION(OSTaskNameGet,".UserProgramCode")
INT8U  OSTaskNameGet( INT8U prio, INT8U *pname, INT8U *perr )
{
	OS_TCB    *ptcb;
	INT8U      len;
#if OS_CRITICAL_METHOD == 3                              /* Allocate storage for CPU status register   */
	OS_CPU_SR  cpu_sr = 0;
#endif



#if OS_ARG_CHK_EN > 0
	if ( perr == ( INT8U * )0 )                          /* Validate 'perr'                            */
	{
		return ( 0 );
	}
	if ( prio > OS_LOWEST_PRIO )                         /* Task priority valid ?                      */
	{
		if ( prio != OS_PRIO_SELF )
		{
			*perr = OS_ERR_PRIO_INVALID;                 /* No                                         */
			return ( 0 );
		}
	}
	if ( pname == ( INT8U * )0 )                         /* Is 'pname' a NULL pointer?                 */
	{
		*perr = OS_ERR_PNAME_NULL;                       /* Yes                                        */
		return ( 0 );
	}
#endif
	if ( OSIntNesting > 0 )                              /* See if trying to call from an ISR          */
	{
		*perr = OS_ERR_NAME_GET_ISR;
		return ( 0 );
	}
	OS_ENTER_CRITICAL();
	if ( prio == OS_PRIO_SELF )                          /* See if caller desires it's own name        */
	{
		prio = OSTCBCur->OSTCBPrio;
	}
	ptcb = OSTCBPrioTbl[prio];
	if ( ptcb == ( OS_TCB * )0 )                         /* Does task exist?                           */
	{
		OS_EXIT_CRITICAL();                              /* No                                         */
		*perr = OS_ERR_TASK_NOT_EXIST;
		return ( 0 );
	}
	if ( ptcb == OS_TCB_RESERVED )                       /* Task assigned to a Mutex?                  */
	{
		OS_EXIT_CRITICAL();                              /* Yes                                        */
		*perr = OS_ERR_TASK_NOT_EXIST;
		return ( 0 );
	}
	len   = OS_StrCopy( pname, ptcb->OSTCBTaskName );    /* Yes, copy name from TCB                    */
	OS_EXIT_CRITICAL();
	*perr = OS_ERR_NONE;
	return ( len );
}
Exemplo n.º 5
0
void  OSTaskNameSet (INT8U prio, INT8U *pname, INT8U *perr)
{
    INT8U      len;
    OS_TCB    *ptcb;
#if OS_CRITICAL_METHOD == 3                          /* Allocate storage for CPU status register       */
    OS_CPU_SR  cpu_sr = 0;
#endif



#if OS_ARG_CHK_EN > 0
    if (perr == (INT8U *)0) {                        /* Validate 'perr'                                */
        return;
    }
    if (prio > OS_LOWEST_PRIO) {                     /* Task priority valid ?                          */
        if (prio != OS_PRIO_SELF) {
            *perr = OS_ERR_PRIO_INVALID;             /* No                                             */
            return;
        }
    }
    if (pname == (INT8U *)0) {                       /* Is 'pname' a NULL pointer?                     */
        *perr = OS_ERR_PNAME_NULL;                   /* Yes                                            */
        return;
    }
#endif
    if (OSIntNesting > 0) {                          /* See if trying to call from an ISR              */
        *perr = OS_ERR_NAME_SET_ISR;
        return;
    }
    OS_ENTER_CRITICAL();
    if (prio == OS_PRIO_SELF) {                      /* See if caller desires to set it's own name     */
        prio = OSTCBCur->OSTCBPrio;
    }
    ptcb = OSTCBPrioTbl[prio];
    if (ptcb == (OS_TCB *)0) {                       /* Does task exist?                               */
        OS_EXIT_CRITICAL();                          /* No                                             */
        *perr = OS_ERR_TASK_NOT_EXIST;
        return;
    }
    if (ptcb == OS_TCB_RESERVED) {                   /* Task assigned to a Mutex?                      */
        OS_EXIT_CRITICAL();                          /* Yes                                            */
        *perr = OS_ERR_TASK_NOT_EXIST;
        return;
    }
    len = OS_StrLen(pname);                          /* Yes, Can we fit the string in the TCB?         */
    if (len > (OS_TASK_NAME_SIZE - 1)) {             /*      No                                        */
        OS_EXIT_CRITICAL();
        *perr = OS_ERR_TASK_NAME_TOO_LONG;
        return;
    }
    (void)OS_StrCopy(ptcb->OSTCBTaskName, pname);    /*      Yes, copy to TCB                          */
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_NONE;
}
Exemplo n.º 6
0
INT8U OSTmrNameGet( OS_TMR * ptmr, INT8U * pdest, INT8U * perr )
{
    INT8U          len;


#if OS_ARG_CHK_EN > 0
    if ( perr == ( INT8U * ) 0 )
    {
        return ( 0 );
    }
    if ( pdest == ( INT8U * ) 0 )
    {
        *perr = OS_ERR_TMR_INVALID_DEST;
        return ( 0 );
    }
    if ( ptmr == ( OS_TMR * ) 0 )
    {
        *perr = OS_ERR_TMR_INVALID;
        return ( 0 );
    }
#endif
    if ( ptmr->OSTmrType != OS_TMR_TYPE )
    {                           /* Validate timer structure                                    */
        *perr = OS_ERR_TMR_INVALID_TYPE;
        return ( 0 );
    }
    if ( OSIntNesting > 0 )
    {                           /* See if trying to call from an ISR                           */
        *perr = OS_ERR_TMR_ISR;
        return ( 0 );
    }
    OSTmr_Lock(  );
    switch ( ptmr->OSTmrState )
    {
        case OS_TMR_STATE_RUNNING:
        case OS_TMR_STATE_STOPPED:
        case OS_TMR_STATE_COMPLETED:
            len = OS_StrCopy( pdest, ptmr->OSTmrName );
            OSTmr_Unlock(  );
            *perr = OS_NO_ERR;
            return ( len );

        case OS_TMR_STATE_UNUSED:      /* Timer is not allocated                                      */
            OSTmr_Unlock(  );
            *perr = OS_ERR_TMR_INACTIVE;
            return ( 0 );

        default:
            OSTmr_Unlock(  );
            *perr = OS_ERR_TMR_INVALID_STATE;
            return ( 0 );
    }
}
Exemplo n.º 7
0
void OSTaskNameSet (INT8U prio, char *pname, INT8U *err)
{
	INT8U len;
	OS_TCB *ptcb;
#if OS_CRITICAL_METHOD == 3                          /* Allocate storage for CPU status register       */
	OS_CPU_SR cpu_sr;

	cpu_sr = 0; /* Prevent compiler warning                       */
#endif    
#if OS_ARG_CHK_EN > 0
	if (prio > OS_LOWEST_PRIO) { /* Task priority valid ?                          */
		if (prio != OS_PRIO_SELF) {
			*err = OS_PRIO_INVALID; /* No                                             */
			return;
		}
	}
	if (pname == (char *)0) { /* Is 'pname' a NULL pointer?                     */
		*err = OS_ERR_PNAME_NULL; /* Yes                                            */
		return;
	}
#endif
	OS_ENTER_CRITICAL();
	if (prio == OS_PRIO_SELF) { /* See if caller desires to set it's own name     */
		prio = OSTCBCur->OSTCBPrio;
	}
	ptcb = OSTCBPrioTbl[prio];
	if (ptcb == (OS_TCB *)0) { /* Does task exist?                               */
		OS_EXIT_CRITICAL(); /* No                                             */
		*err = OS_TASK_NOT_EXIST;
		return;
	}
	if (ptcb == (OS_TCB *)1) { /* Task assigned to a Mutex?                      */
		OS_EXIT_CRITICAL(); /* Yes                                            */
		*err = OS_TASK_NOT_EXIST;
		return;
	}
	len = OS_StrLen(pname); /* Yes, Can we fit the string in the TCB?         */
	if (len > (OS_TASK_NAME_SIZE - 1)) { /*      No                                        */
		OS_EXIT_CRITICAL();
		*err = OS_ERR_TASK_NAME_TOO_LONG;
		return;
	}
	(void)OS_StrCopy(ptcb->OSTCBTaskName, pname); /*      Yes, copy to TCB                          */
	OS_EXIT_CRITICAL();
	*err = OS_NO_ERR;
}
Exemplo n.º 8
0
void  OSMemNameSet (OS_MEM *pmem, INT8U *pname, INT8U *perr)
{
    INT8U      len;
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif



#if OS_ARG_CHK_EN > 0
    if (perr == (INT8U *)0)                      /* Validate 'perr'                                    */
    {
        return;
    }
    if (pmem == (OS_MEM *)0)                     /* Is 'pmem' a NULL pointer?                          */
    {
        *perr = OS_ERR_MEM_INVALID_PMEM;
        return;
    }
    if (pname == (INT8U *)0)                     /* Is 'pname' a NULL pointer?                         */
    {
        *perr = OS_ERR_PNAME_NULL;
        return;
    }
#endif
    if (OSIntNesting > 0)                        /* See if trying to call from an ISR                  */
    {
        *perr = OS_ERR_NAME_SET_ISR;
        return;
    }
    OS_ENTER_CRITICAL();
    len = OS_StrLen(pname);                      /* Can we fit the string in the storage area?         */
    if (len > (OS_MEM_NAME_SIZE - 1))            /* No                                                 */
    {
        OS_EXIT_CRITICAL();
        *perr = OS_ERR_MEM_NAME_TOO_LONG;
        return;
    }
    (void)OS_StrCopy(pmem->OSMemName, pname);    /* Yes, copy name to the memory partition header      */
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_NONE;
}
Exemplo n.º 9
0
void OSFlagNameSet(OS_FLAG_GRP * pgrp, INT8U * pname, INT8U * perr)
{
  INT8U len;
#if OS_CRITICAL_METHOD == 3     /* Allocate storage for CPU status register           */
  OS_CPU_SR cpu_sr = 0;
#endif

#if OS_ARG_CHK_EN > 0
  if (perr == (INT8U *) 0) {    /* Validate 'perr'                                    */
    return;
  }
  if (pgrp == (OS_FLAG_GRP *) 0) {      /* Is 'pgrp' a NULL pointer?                          */
    *perr = OS_ERR_FLAG_INVALID_PGRP;
    return;
  }
  if (pname == (INT8U *) 0) {   /* Is 'pname' a NULL pointer?                         */
    *perr = OS_ERR_PNAME_NULL;
    return;
  }
#endif
  if (OSIntNesting > 0) {       /* See if trying to call from an ISR                  */
    *perr = OS_ERR_NAME_SET_ISR;
    return;
  }
  OS_ENTER_CRITICAL();
  if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_EVENT_TYPE;
    return;
  }
  len = OS_StrLen(pname);       /* Can we fit the string in the storage area?         */
  if (len > (OS_FLAG_NAME_SIZE - 1)) {  /* No                                                 */
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_FLAG_NAME_TOO_LONG;
    return;
  }
  (void) OS_StrCopy(pgrp->OSFlagName, pname);   /* Yes, copy name from OS_FLAG_GRP                    */
  OS_EXIT_CRITICAL();
  *perr = OS_ERR_NONE;
  return;
}
Exemplo n.º 10
0
void  OSMemNameSet (OS_MEM *pmem, INT8U *pname, INT8U *err)
{
    INT8U      len;
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif



    OS_ENTER_CRITICAL();
#if OS_ARG_CHK_EN > 0
    if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
        OS_EXIT_CRITICAL();
        return;
    }
    if (pmem == (OS_MEM *)0) {                   /* Is 'pmem' a NULL pointer?                          */
        OS_EXIT_CRITICAL();                      /* Yes                                                */
        *err = OS_MEM_INVALID_PMEM;
        return;
    }
    if (pname == (INT8U *)0) {                    /* Is 'pname' a NULL pointer?                         */
        OS_EXIT_CRITICAL();                      /* Yes                                                */
        *err = OS_ERR_PNAME_NULL;
        return;
    }
#endif
    len = OS_StrLen(pname);                      /* Can we fit the string in the storage area?         */
    if (len > (OS_MEM_NAME_SIZE - 1)) {          /* No                                                 */
        OS_EXIT_CRITICAL();
        *err = OS_MEM_NAME_TOO_LONG;
        return;
    }
    (void)OS_StrCopy(pmem->OSMemName, pname);    /* Yes, copy name to the memory partition header      */
    OS_EXIT_CRITICAL();
    *err = OS_NO_ERR;
}
Exemplo n.º 11
0
OS_TMR  *OSTmrCreate (INT32U           dly,
                      INT32U           period,
                      INT8U            opt,
                      OS_TMR_CALLBACK  callback,
                      void            *callback_arg,
                      INT8U           *pname,
                      INT8U           *perr)
{
    OS_TMR   *ptmr;
#if OS_TMR_CFG_NAME_SIZE > 0
    INT8U     len;
#endif


#if OS_ARG_CHK_EN > 0
    if (perr == (INT8U *)0) {                               /* Validate arguments                                     */
        return ((OS_TMR *)0);
    }
    switch (opt) {
        case OS_TMR_OPT_PERIODIC:
             if (period == 0) {
                 *perr = OS_ERR_TMR_INVALID_PERIOD;
                 return ((OS_TMR *)0);
             }
             break;

        case OS_TMR_OPT_ONE_SHOT:
             if (dly == 0) {
                 *perr = OS_ERR_TMR_INVALID_DLY;
                 return ((OS_TMR *)0);
             }
             break;

        default:
             *perr = OS_ERR_TMR_INVALID_OPT;
             return ((OS_TMR *)0);
    }
#endif
    if (OSIntNesting > 0) {                                 /* See if trying to call from an ISR                      */
        *perr  = OS_ERR_TMR_ISR;
        return ((OS_TMR *)0);
    }
    OSTmr_Lock();
    ptmr = OSTmr_Alloc();                                   /* Obtain a timer from the free pool                      */
    if (ptmr == (OS_TMR *)0) {
        OSTmr_Unlock();
        *perr = OS_ERR_TMR_NON_AVAIL;
        return ((OS_TMR *)0);
    }
    ptmr->OSTmrState       = OS_TMR_STATE_STOPPED;          /* Indicate that timer is not running yet                 */
    ptmr->OSTmrDly         = dly;
    ptmr->OSTmrPeriod      = period;
    ptmr->OSTmrOpt         = opt;
    ptmr->OSTmrCallback    = callback;
    ptmr->OSTmrCallbackArg = callback_arg;
#if OS_TMR_CFG_NAME_SIZE > 0
    if (pname !=(INT8U *)0) {
        len = OS_StrLen(pname);                             /* Copy timer name                                        */
        if (len < OS_TMR_CFG_NAME_SIZE) {
            (void)OS_StrCopy(ptmr->OSTmrName, pname);
        } else {
#if OS_TMR_CFG_NAME_SIZE > 1
            ptmr->OSTmrName[0] = '#';                       /* Invalid size specified                                 */
            ptmr->OSTmrName[1] = OS_ASCII_NUL;
#endif
            *perr              = OS_ERR_TMR_NAME_TOO_LONG;
            OSTmr_Unlock();
            return (ptmr);
        }
    }
#endif
    OSTmr_Unlock();
    *perr = OS_ERR_NONE;
    return (ptmr);
}