3.3.9 SAFE_PLIB_PAC

Set of safe functions for setting up and controlling the PAC peripheral.

#define PAC_ERROR_INVALID_PARAMETER                   (0x2U)

typedef enum
{
    /* No Action */
    PAC_PROTECTION_OFF = 0,

    /* Clear the peripheral write control protection */
    PAC_PROTECTION_CLEAR = 1,

    /* Set the peripheral write control protection */
    PAC_PROTECTION_SET = 2,

    /* Set and lock the peripheral write control until the next hardware reset */
    PAC_PROTECTION_SET_AND_LOCK = 3,

    PAC_PROTECTION_Max = 4

} PAC_PROTECTION;

typedef enum
{
    /* Instance Id for Peripheral AC */
    PAC_PERIPHERAL_AC = ID_AC,

    /* Instance Id for Peripheral ADC0 */
    PAC_PERIPHERAL_ADC0 = ID_ADC0,

    /* Instance Id for Peripheral ADC1 */
    PAC_PERIPHERAL_ADC1 = ID_ADC1,

    /* Instance Id for Peripheral CAN0 */
    PAC_PERIPHERAL_CAN0 = ID_CAN0,

    /* Instance Id for Peripheral CAN1 */
    PAC_PERIPHERAL_CAN1 = ID_CAN1,

    /* Instance Id for Peripheral CCL */
    PAC_PERIPHERAL_CCL = ID_CCL,

    /* Instance Id for Peripheral DAC */
    PAC_PERIPHERAL_DAC = ID_DAC,

    /* Instance Id for Peripheral DMAC */
    PAC_PERIPHERAL_DMAC = ID_DMAC,

    /* Instance Id for Peripheral DSU */
    PAC_PERIPHERAL_DSU = ID_DSU,

    /* Instance Id for Peripheral EIC */
    PAC_PERIPHERAL_EIC = ID_EIC,

    /* Instance Id for Peripheral EVSYS */
    PAC_PERIPHERAL_EVSYS = ID_EVSYS,

    /* Instance Id for Peripheral FREQM */
    PAC_PERIPHERAL_FREQM = ID_FREQM,

    /* Instance Id for Peripheral GCLK */
    PAC_PERIPHERAL_GCLK = ID_GCLK,

    /* Instance Id for Peripheral HMATRIXHS */
    PAC_PERIPHERAL_HMATRIXHS = ID_HMATRIXHS,

    /* Instance Id for Peripheral MCLK */
    PAC_PERIPHERAL_MCLK = ID_MCLK,

    /* Instance Id for Peripheral MTB */
    PAC_PERIPHERAL_MTB = ID_MTB,

    /* Instance Id for Peripheral NVMCTRL */
    PAC_PERIPHERAL_NVMCTRL = ID_NVMCTRL,

    /* Instance Id for Peripheral OSCCTRL */
    PAC_PERIPHERAL_OSCCTRL = ID_OSCCTRL,

    /* Instance Id for Peripheral OSC32KCTRL */
    PAC_PERIPHERAL_OSC32KCTRL = ID_OSC32KCTRL,

    /* Instance Id for Peripheral PAC */
    PAC_PERIPHERAL_PAC = ID_PAC,

    /* Instance Id for Peripheral PM */
    PAC_PERIPHERAL_PM = ID_PM,

    /* Instance Id for Peripheral PORT */
    PAC_PERIPHERAL_PORT = ID_PORT,

    /* Instance Id for Peripheral PTC */
    PAC_PERIPHERAL_PTC = ID_PTC,

    /* Instance Id for Peripheral RSTC */
    PAC_PERIPHERAL_RSTC = ID_RSTC,

    /* Instance Id for Peripheral RTC */
    PAC_PERIPHERAL_RTC = ID_RTC,

    /* Instance Id for Peripheral SDADC */
    PAC_PERIPHERAL_SDADC = ID_SDADC,

    /* Instance Id for Peripheral SERCOM0 */
    PAC_PERIPHERAL_SERCOM0 = ID_SERCOM0,

    /* Instance Id for Peripheral SERCOM1 */
    PAC_PERIPHERAL_SERCOM1 = ID_SERCOM1,

    /* Instance Id for Peripheral SERCOM2 */
    PAC_PERIPHERAL_SERCOM2 = ID_SERCOM2,

    /* Instance Id for Peripheral SERCOM3 */
    PAC_PERIPHERAL_SERCOM3 = ID_SERCOM3,

    /* Instance Id for Peripheral SERCOM4 */
    PAC_PERIPHERAL_SERCOM4 = ID_SERCOM4,

    /* Instance Id for Peripheral SERCOM5 */
    PAC_PERIPHERAL_SERCOM5 = ID_SERCOM5,

    /* Instance Id for Peripheral SUPC */
    PAC_PERIPHERAL_SUPC = ID_SUPC,

    /* Instance Id for Peripheral TC0 */
    PAC_PERIPHERAL_TC0 = ID_TC0,

    /* Instance Id for Peripheral TC1 */
    PAC_PERIPHERAL_TC1 = ID_TC1,

    /* Instance Id for Peripheral TC2 */
    PAC_PERIPHERAL_TC2 = ID_TC2,

    /* Instance Id for Peripheral TC3 */
    PAC_PERIPHERAL_TC3 = ID_TC3,

    /* Instance Id for Peripheral TC4 */
    PAC_PERIPHERAL_TC4 = ID_TC4,

    /* Instance Id for Peripheral TCC0 */
    PAC_PERIPHERAL_TCC0 = ID_TCC0,

    /* Instance Id for Peripheral TCC1 */
    PAC_PERIPHERAL_TCC1 = ID_TCC1,

    /* Instance Id for Peripheral TCC2 */
    PAC_PERIPHERAL_TCC2 = ID_TCC2,

    /* Instance Id for Peripheral TSENS */
    PAC_PERIPHERAL_TSENS = ID_TSENS,

    /* Instance Id for Peripheral WDT */
    PAC_PERIPHERAL_WDT = ID_WDT,

    PAC_PERIPHERAL_NONE = -1

} PAC_PERIPHERAL;

typedef void (*PAC_CALLBACK)( uintptr_t context );

typedef struct
{
    PAC_CALLBACK callback;

    uintptr_t context;

} PAC_CALLBACK_OBJ;