RabbitECUTeensyMCUXpresso/source/KernelServices/regset.c

176 lines
4.1 KiB
C

/******************************************************************************/
/* Copyright (c) 2016 MD Automotive Controls. Original Work. */
/* License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher */
/******************************************************************************/
/* CONTEXT:KERNEL */
/* PACKAGE TITLE: REGSET */
/* DESCRIPTION: This code is functions for register setup */
/* */
/* FILE NAME: REGSET.c */
/* REVISION HISTORY: 28-03-2016 | 1.0 | Initial revision */
/* */
/******************************************************************************/
#include <DECLARATIONS.h>
#include <string.h>
#include "mk64f12.h"
#include "regset.h"
#include "OS.h"
void REGSET_vStart(uint32* u32Stat)
{
OS_xModuleStartOK(*u32Stat);
}
void REGSET_vRun(uint32* const u32Stat)
{
}
void REGSET_vTerminate(uint32* const u32Stat)
{
}
/************************************************
*
* Function: REGSET_vInitReg32
*
* Inputs: list - pointer to the null terminated list of
* register:value:writemode triples.
*
* Outputs: All registers in list are set to value iaw
* write mode.
*
* Returns: None.
*
* Description: This routine navigates a list of 32 bit
* registers and set them to a default value
* and returns on NULL register pointer.
*
************************************************/
void REGSET_vInitReg32(const REGSET_tstReg32Val* ast)
{
while(ast->reg != NULL)
{
switch (ast->writeMode)
{
case REGSET_enOverwrite:
*ast->reg = ast->val;
break;
case REGSET_enOr:
*ast->reg |= ast->val;
break;
case REGSET_enAnd:
*ast->reg &= ast->val;
break;
case REGSET_enXor:
*ast->reg ^= ast->val;
break;
default:
break;
}
ast++;
}
}
/************************************************
*
* Function: REGSET_vInitReg16
*
* Inputs: list - pointer to the null terminated list of
* register:value:writemode triples.
*
* Outputs: All registers in list are set to value iaw
* write mode.
*
* Returns: None.
*
* Description: This routine navigates a list of 16 bit
* registers and set them to a default value
* and returns on NULL register pointer.
*
************************************************/
void REGSET_vInitReg16(const REGSET_tstReg16Val* ast)
{
while(ast->reg != NULL)
{
switch (ast->writeMode)
{
case REGSET_enOverwrite:
*ast->reg = ast->val;
break;
case REGSET_enOr:
*ast->reg |= ast->val;
break;
case REGSET_enAnd:
*ast->reg &= ast->val;
break;
case REGSET_enXor:
*ast->reg ^= ast->val;
break;
default:
break;
}
ast++;
}
}
/************************************************
*
* Function: REGSET_vInitReg8
*
* Inputs: list - pointer to the null terminated list of
* register:value:writemode triples.
*
* Outputs: All registers in list are set to value iaw
* write mode.
*
* Returns: None.
*
* Description: This routine navigates a list of 8 bit
* registers and set them to a default value
* and returns on NULL register pointer.
*
************************************************/
void REGSET_vInitReg8(const REGSET_tstReg8Val* ast)
{
while(ast->reg != NULL)
{
switch (ast->writeMode)
{
case REGSET_enOverwrite:
*ast->reg = ast->val;
break;
case REGSET_enOr:
*ast->reg |= ast->val;
break;
case REGSET_enAnd:
*ast->reg &= ast->val;
break;
case REGSET_enXor:
*ast->reg ^= ast->val;
break;
default:
break;
}
ast++;
}
}