3.4.5. icsp_soft — Software ICSP


Source code: src/drivers/network/icsp_soft.h, src/drivers/network/icsp_soft.c

Test code: tst/drivers/software/network/icsp_soft/master/main.c


Functions

int icsp_soft_module_init(void)

Initialize ICSP soft module. This function must be called before calling any other function in this module.

The module will only be initialized once even if this function is called multiple times.

Return
zero(0) or negative error code.

int icsp_soft_init(struct icsp_soft_driver_t *self_p, struct pin_device_t *pgec_p, struct pin_device_t *pged_p, struct pin_device_t *mclrn_p)

Initialize given driver object.

Return
zero(0) or negative error code.
Parameters
  • self_p: Driver object to initialize.
  • pgec_p: Clock.
  • pged_p: Data.
  • mclrn_p: Master control (reset).

int icsp_soft_start(struct icsp_soft_driver_t *self_p)

Start given ICSP soft driver. Configures all pins and enters the idle state in the ICSP TAP controller state machine.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int icsp_soft_stop(struct icsp_soft_driver_t *self_p)

Stop given ICSP soft driver. Enters the reset state in the ICSP TAP controller state machine and then configures all pins as inputs.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int icsp_soft_reset(struct icsp_soft_driver_t *self_p)

Reset the ICSP device and then enter the idle state.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int icsp_soft_instruction_write(struct icsp_soft_driver_t *self_p, const void *buf_p, size_t number_of_bits)

Write given instruction to given ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Instruction to write.
  • size: Number of bits to write.

int icsp_soft_data_transfer(struct icsp_soft_driver_t *self_p, void *rxbuf_p, const void *txbuf_p, size_t number_of_bits)

Simultaniuos data read/write operation from/to given ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • rxbuf_p: Buffer to read into.
  • txbuf_p: Buffer to write.
  • size: Number of bits to transfer.

int icsp_soft_data_read(struct icsp_soft_driver_t *self_p, void *buf_p, size_t number_of_bits)

Read data from given ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Buffer to read into.
  • size: Number of bits to read.

int icsp_soft_data_write(struct icsp_soft_driver_t *self_p, const void *buf_p, size_t number_of_bits)

Write given data to the ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Buffer to write.
  • size: Number of bits to write.

int icsp_soft_fast_data_transfer(struct icsp_soft_driver_t *self_p, void *rxbuf_p, const void *txbuf_p, size_t number_of_bits)

Simultaniuos fast data read/write operation from/to given ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • rxbuf_p: Buffer to read into.
  • txbuf_p: Buffer to write.
  • size: Number of bits to transfer.

int icsp_soft_fast_data_read(struct icsp_soft_driver_t *self_p, uint32_t *data_p)

Fast read data from given ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • data_p: Read data.

int icsp_soft_fast_data_write(struct icsp_soft_driver_t *self_p, uint32_t data)

Fast write given data to the ICSP device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • data: Dat ato write.

int icsp_soft_make_transition(struct icsp_soft_driver_t *self_p, int transition)

Make given transition in the ICSP TAP controller state machine.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • transition: Transition to take in the state machine (one(1) or zero(0)).

struct icsp_soft_driver_t

Public Members

struct pin_device_t *pgec_p
struct pin_device_t *pged_p
struct pin_device_t *mclrn_p