phStatus_t initLayers() { /* Initialize the Reader BAL (Bus Abstraction Layer) component */ PH_CHECK_SUCCESS_FCT(status, phbalReg_R_Pi_spi_Init(&bal, sizeof(phbalReg_R_Pi_spi_DataParams_t))); PH_CHECK_SUCCESS_FCT(status, phbalReg_OpenPort((void *)&bal)); /* we have a board with PN512, * but on the software point of view, * it's compatible to the RC523 */ PH_CHECK_SUCCESS_FCT(status, phhalHw_Rc523_Init(&hal, sizeof(phhalHw_Rc523_DataParams_t), (void *)&bal, 0, bHalBufferReader, sizeof(bHalBufferReader), bHalBufferReader, sizeof(bHalBufferReader))); /* Set the HAL configuration to SPI */ PH_CHECK_SUCCESS_FCT(status, phhalHw_SetConfig(&hal, PHHAL_HW_CONFIG_BAL_CONNECTION, PHHAL_HW_BAL_CONNECTION_SPI)); PH_CHECK_SUCCESS_FCT(status, phpalI14443p3a_Sw_Init(&palI14443p3a, sizeof(phpalI14443p3a_Sw_DataParams_t), &hal)); PH_CHECK_SUCCESS_FCT(status, phpalI14443p4_Sw_Init(&palI14443p4, sizeof(phpalI14443p4_Sw_DataParams_t), &hal)); PH_CHECK_SUCCESS_FCT(status, phpalMifare_Sw_Init(&palMifare, sizeof(phpalMifare_Sw_DataParams_t), &hal, &palI14443p4)); PH_CHECK_SUCCESS_FCT(status, phalMfc_Sw_Init(&alMfc, sizeof(phalMfc_Sw_DataParams_t), &palMifare, NULL)); return PH_ERR_SUCCESS; }
int Mifare_init(Mifare *self, PyObject *args, PyObject *kwds) { phStatus_t status; /* Initialize the Reader BAL (Bus Abstraction Layer) component */ status = phbalReg_RpiSpi_Init(&self->data.balReader, sizeof(phbalReg_RpiSpi_DataParams_t)); if (PH_ERR_SUCCESS != status) { PyErr_Format(InitError, "SPI Init failed: %04x", status); return -1; } status = phbalReg_OpenPort(&self->data.balReader); if (PH_ERR_SUCCESS != status) { PyErr_Format(InitError, "OpenPort failed: %04x", status); return -1; } /* we have a board with PN512, * but on the software point of view, * it's compatible to the RC523 */ status = phhalHw_Rc523_Init(&self->data.hal, sizeof(phhalHw_Rc523_DataParams_t), &self->data.balReader, 0, &self->data.bHalBufferReader[0], sizeof(self->data.bHalBufferReader), &self->data.bHalBufferReader[0], sizeof(self->data.bHalBufferReader)); if (PH_ERR_SUCCESS != status) { PyErr_Format(InitError, "Rc523_Init failed: %04x", status); return -1; } /* Set the HAL configuration to SPI */ status = phhalHw_SetConfig(&self->data.hal, PHHAL_HW_CONFIG_BAL_CONNECTION, PHHAL_HW_BAL_CONNECTION_SPI); if (PH_ERR_SUCCESS != status) { PyErr_Format(InitError, "SetConfig failed: %04x", status); return -1; } /* Initialize the 14443-3A PAL (Protocol Abstraction Layer) component */ PH_CHECK_SUCCESS_FCT(status, phpalI14443p3a_Sw_Init(&self->data.I14443p3a, sizeof(phpalI14443p3a_Sw_DataParams_t), &self->data.hal)); /* Initialize the 14443-4 PAL component */ PH_CHECK_SUCCESS_FCT(status, phpalI14443p4_Sw_Init(&self->data.I14443p4, sizeof(phpalI14443p4_Sw_DataParams_t), &self->data.hal)); /* Initialize the Mifare PAL component */ PH_CHECK_SUCCESS_FCT(status, phpalMifare_Sw_Init(&self->data.palMifare, sizeof(phpalMifare_Sw_DataParams_t), &self->data.hal, &self->data.I14443p4)); /* Initialize Ultralight(-C) AL component */ PH_CHECK_SUCCESS_FCT(status, phalMful_Sw_Init(&self->data.alMful, sizeof(phalMful_Sw_DataParams_t), &self->data.palMifare, NULL, NULL, NULL)); return 0; }