Here is the list of APIs used for HDSL Encoder communication protocol
Data Structures | |
struct | HDSL_Interface |
struct | HDSL_Config |
struct | HDSL_CopyTable |
Functions | |
void | hdsl_enable_load_share_mode (void *pruCfg, uint32_t pruSlice) |
enable load share mode for multi-channel HDSL More... | |
HDSL_Handle | HDSL_open (PRUICSS_Handle icssgHandle, uint32_t icssCore, uint8_t pruMode) |
Open HDSL handle for the specified core (interrupt mapping should already be completed) More... | |
void | HDSL_iep_init (HDSL_Handle hdslHandle) |
Initialize IEP and Use OCP as IEP CLK src. More... | |
int | HDSL_enable_sync_signal (uint8_t ES, uint32_t period) |
Enable IEP *Enable SYNC0 and program pulse width Enable cyclic mod Program CMP1 TSR configuration More... | |
uint64_t | HDSL_get_pos (HDSL_Handle hdslHandle, int position_id) |
Calculate fast position,safe position1,safe position2. More... | |
uint8_t | HDSL_get_qm (HDSL_Handle hdslHandle) |
Getting quality monitoring value. More... | |
uint16_t | HDSL_get_events (HDSL_Handle hdslHandle) |
Taking values of High bytes event (EVENT_H) and Low bytes event(EVENT_L) More... | |
uint8_t | HDSL_get_safe_events (HDSL_Handle hdslHandle) |
Taking values of Safe Event (EVENT_S) register. More... | |
uint16_t | HDSL_get_online_status_d (HDSL_Handle hdslHandle) |
Taking values of Online Status D (ONLINE_STATUS_D) register. More... | |
uint16_t | HDSL_get_online_status_1 (HDSL_Handle hdslHandle) |
Taking values of Online Status D (ONLINE_STATUS_D) register. More... | |
uint16_t | HDSL_get_online_status_2 (HDSL_Handle hdslHandle) |
Taking values of Online Status D (ONLINE_STATUS_D) register. More... | |
uint8_t | HDSL_get_sum (HDSL_Handle hdslHandle) |
Getting Summarized slave status. More... | |
uint8_t | HDSL_get_acc_err_cnt (HDSL_Handle hdslHandle) |
Acceleration error counter. More... | |
uint8_t | HDSL_get_rssi (HDSL_Handle hdslHandle) |
Read RSSI value. More... | |
int32_t | HDSL_write_pc_short_msg (HDSL_Handle hdslHandle, uint8_t addr, uint8_t data, uint64_t timeout) |
Trigger a short message write operation using parameters channel After the required registers are written for write operation, the firmware takes < 250 us for completing short message write operation, i.e. FRES bit will be unset for < 250 us. More... | |
int32_t | HDSL_read_pc_short_msg (HDSL_Handle hdslHandle, uint8_t addr, uint8_t *data, uint64_t timeout) |
Trigger a short message read operation using parameters channel. After the required registers are written for read operation, the firmware takes < 250 us for completing short message read operation, i.e. FRES bit will be unset for < 250 us. More... | |
int32_t | HDSL_write_pc_long_msg (HDSL_Handle hdslHandle, uint16_t addr, uint8_t offsetEnable, uint8_t addrType, uint8_t length, uint16_t offset, uint64_t timeout) |
Trigger a long message write operation using parameters channel. Call HDSL_write_pc_buffer before this to write the data to be sent using long message. After the required registers are written for write operation, the firmware takes < 3.5 ms for completing short message write operation, i.e. FREL bit will be unset for < 3.5 ms. More... | |
int32_t | HDSL_read_pc_long_msg (HDSL_Handle hdslHandle, uint16_t addr, uint8_t offsetEnable, uint8_t addrType, uint8_t length, uint16_t offset, uint64_t timeout) |
Trigger a long message read operation using parameters channel If this API returns SystemP_SUCCESS, call HDSL_read_pc_buffer after this to read the data received using long message. After the required registers are written for read operation, the firmware takes < 3.5 ms for completing short message read operation, i.e. FREL bit will be unset for < 3.5 ms. More... | |
void | HDSL_write_pc_buffer (HDSL_Handle hdslHandle, uint8_t buff_off, uint8_t data) |
Write Parameters channel buffer for different bytes(bytes 0-7) More... | |
uint8_t | HDSL_read_pc_buffer (HDSL_Handle hdslHandle, uint8_t buff_off) |
Returns Parameters channel buffer for different bytes(bytes 0-7) More... | |
uint8_t | HDSL_get_sync_ctrl (HDSL_Handle hdslHandle) |
Returns Synchronization control value. More... | |
void | HDSL_set_sync_ctrl (HDSL_Handle hdslHandle, uint8_t val) |
Writes Synchronization control value. More... | |
uint8_t | HDSL_get_master_qm (HDSL_Handle hdslHandle) |
Returns Quality monitoring value. More... | |
uint8_t | HDSL_get_edges (HDSL_Handle hdslHandle) |
Returns Cable bit sampling time control. More... | |
uint8_t | HDSL_get_delay (HDSL_Handle hdslHandle) |
Returns Run time delay of system cable and signal strength. More... | |
uint8_t | HDSL_get_enc_id (HDSL_Handle hdslHandle, int byte) |
Read encoder id bytes(byte no. 0-2) More... | |
void | HDSL_generate_memory_image (HDSL_Handle hdslHandle) |
Generates memory image. More... | |
void * | HDSL_get_src_loc (HDSL_Handle hdslHandle) |
Get memory location for HDSL interface struct. More... | |
uint32_t | HDSL_get_length (HDSL_Handle hdslHandle) |
Get size of memory used by HDSL interface struct. More... | |
int32_t | HDSL_config_copy_table (HDSL_Handle hdslHandle, HDSL_CopyTable *copyTable) |
Configure the copy table entries for two overlayed firmware parts for channel 2. More... | |
int32_t | HDSL_config_channel_mask (HDSL_Handle hdslHandle, uint8_t channelMask) |
Configure the channel mask. More... | |
Typedefs | |
typedef struct HDSL_Config_s * | HDSL_Handle |
Macros | |
#define | HDSL_MAX_CHANNELS (3U) |
#define | CHANNEL_0_ENABLED (1<<0) |
#define | CHANNEL_1_ENABLED (1<<1) |
#define | CHANNEL_2_ENABLED (1<<2) |
#define | MAX_WAIT 20000 |
#define | HDSL_ICSSG0_INST 0U |
#define | HDSL_ICSSG1_INST 1U |
#define | HWREG(x) (*((volatile uint32_t *)(x))) |
#define | HWREGB(x) (*((volatile uint8_t *)(x))) |
#define | HWREGH(x) (*((volatile uint16_t *)(x))) |
#define | SYNCEVENT_INTRTR_IN_27 27 |
#define | SYNCEVT_RTR_SYNC28_EVT 0x64 |
#define | SYNCEVT_RTR_SYNC29_EVT 0x68 |
#define | SYNCEVT_RTR_SYNC30_EVT 0x6C |
#define | SYNCEVT_RTR_SYNC31_EVT 0x70 |
#define | SYNCEVT_RTR_SYNC10_EVT 0x2C |
HDSL Long Message Addressing Types | |
#define | HDSL_LONG_MSG_ADDR_DIRECT (0U) |
Direct addressing of long messages. More... | |
#define | HDSL_LONG_MSG_ADDR_INDIRECT (1U) |
Indirect addressing of long messages. More... | |
HDSL Long Message Addressing with/without offset | |
#define | HDSL_LONG_MSG_ADDR_WITHOUT_OFFSET (0U) |
Addressing of long messages without offset. More... | |
#define | HDSL_LONG_MSG_ADDR_WITH_OFFSET (1U) |
Addressing of long messages with offset. More... | |
HDSL Long Message Data Lengths | |
#define | HDSL_LONG_MSG_LENGTH_0 (0U) |
No data bytes. More... | |
#define | HDSL_LONG_MSG_LENGTH_2 (1U) |
2 data bytes More... | |
#define | HDSL_LONG_MSG_LENGTH_4 (2U) |
4 data bytes More... | |
#define | HDSL_LONG_MSG_LENGTH_8 (3U) |
8 data bytes More... | |
#define HDSL_MAX_CHANNELS (3U) |
#define CHANNEL_0_ENABLED (1<<0) |
#define CHANNEL_1_ENABLED (1<<1) |
#define CHANNEL_2_ENABLED (1<<2) |
#define HDSL_LONG_MSG_ADDR_DIRECT (0U) |
Direct addressing of long messages.
#define HDSL_LONG_MSG_ADDR_INDIRECT (1U) |
Indirect addressing of long messages.
#define HDSL_LONG_MSG_ADDR_WITHOUT_OFFSET (0U) |
Addressing of long messages without offset.
#define HDSL_LONG_MSG_ADDR_WITH_OFFSET (1U) |
Addressing of long messages with offset.
#define HDSL_LONG_MSG_LENGTH_0 (0U) |
No data bytes.
#define HDSL_LONG_MSG_LENGTH_2 (1U) |
2 data bytes
#define HDSL_LONG_MSG_LENGTH_4 (2U) |
4 data bytes
#define HDSL_LONG_MSG_LENGTH_8 (3U) |
8 data bytes
#define MAX_WAIT 20000 |
#define HDSL_ICSSG0_INST 0U |
#define HDSL_ICSSG1_INST 1U |
#define HWREG | ( | x | ) | (*((volatile uint32_t *)(x))) |
#define HWREGB | ( | x | ) | (*((volatile uint8_t *)(x))) |
#define HWREGH | ( | x | ) | (*((volatile uint16_t *)(x))) |
#define SYNCEVENT_INTRTR_IN_27 27 |
#define SYNCEVT_RTR_SYNC28_EVT 0x64 |
#define SYNCEVT_RTR_SYNC29_EVT 0x68 |
#define SYNCEVT_RTR_SYNC30_EVT 0x6C |
#define SYNCEVT_RTR_SYNC31_EVT 0x70 |
#define SYNCEVT_RTR_SYNC10_EVT 0x2C |
typedef struct HDSL_Config_s* HDSL_Handle |
anonymous enum |
void hdsl_enable_load_share_mode | ( | void * | pruCfg, |
uint32_t | pruSlice | ||
) |
enable load share mode for multi-channel HDSL
[in] | pruCfg | Cfg base register address |
[in] | pruSlice | PRU slice, 1 for PRU1 and 0 for PRU0 |
HDSL_Handle HDSL_open | ( | PRUICSS_Handle | icssgHandle, |
uint32_t | icssCore, | ||
uint8_t | pruMode | ||
) |
Open HDSL handle for the specified core (interrupt mapping should already be completed)
[in] | icssgHandle | PRUICSS_Handle for the ICSS instance |
[in] | icssCore | Core to map in ICSSG instance |
[in] | pruMode | 0 for load share mode disabled, 1 for load share mode enabled |
HDSL_Handle |
void HDSL_iep_init | ( | HDSL_Handle | hdslHandle | ) |
Initialize IEP and Use OCP as IEP CLK src.
[in] | hdslHandle |
int HDSL_enable_sync_signal | ( | uint8_t | ES, |
uint32_t | period | ||
) |
Enable IEP
*Enable SYNC0 and program pulse width
Enable cyclic mod
Program CMP1
TSR configuration
[in] | ES | |
[in] | period |
1 | for successful enable sync signal |
uint64_t HDSL_get_pos | ( | HDSL_Handle | hdslHandle, |
int | position_id | ||
) |
Calculate fast position,safe position1,safe position2.
[in] | hdslHandle | |
[in] | position_id |
position | value in integer for successful position return, -1 for error in position return |
uint8_t HDSL_get_qm | ( | HDSL_Handle | hdslHandle | ) |
Getting quality monitoring value.
[in] | hdslHandle |
8 | bit integer QM value |
uint16_t HDSL_get_events | ( | HDSL_Handle | hdslHandle | ) |
Taking values of High bytes event (EVENT_H) and Low bytes event(EVENT_L)
[in] | hdslHandle |
16 | bit integer concatenated values of both EVENT_H,EVENT_L |
uint8_t HDSL_get_safe_events | ( | HDSL_Handle | hdslHandle | ) |
Taking values of Safe Event (EVENT_S) register.
[in] | hdslHandle |
8 | bit integer values of EVENT_S |
uint16_t HDSL_get_online_status_d | ( | HDSL_Handle | hdslHandle | ) |
Taking values of Online Status D (ONLINE_STATUS_D) register.
[in] | hdslHandle |
16 | bit integer value of ONLINE_STATUS_D |
uint16_t HDSL_get_online_status_1 | ( | HDSL_Handle | hdslHandle | ) |
Taking values of Online Status D (ONLINE_STATUS_D) register.
[in] | hdslHandle |
16 | bit integer value of ONLINE_STATUS_D |
uint16_t HDSL_get_online_status_2 | ( | HDSL_Handle | hdslHandle | ) |
Taking values of Online Status D (ONLINE_STATUS_D) register.
[in] | hdslHandle |
16 | bit integer value of ONLINE_STATUS_D |
uint8_t HDSL_get_sum | ( | HDSL_Handle | hdslHandle | ) |
Getting Summarized slave status.
[in] | hdslHandle |
8 | bit integer value of summarized status |
uint8_t HDSL_get_acc_err_cnt | ( | HDSL_Handle | hdslHandle | ) |
Acceleration error counter.
[in] | hdslHandle |
8 | bit integer value of acceleration error counter |
uint8_t HDSL_get_rssi | ( | HDSL_Handle | hdslHandle | ) |
Read RSSI value.
[in] | hdslHandle |
8 | bit RSSI integer value |
int32_t HDSL_write_pc_short_msg | ( | HDSL_Handle | hdslHandle, |
uint8_t | addr, | ||
uint8_t | data, | ||
uint64_t | timeout | ||
) |
Trigger a short message write operation using parameters channel After the required registers are written for write operation, the firmware takes < 250 us for completing short message write operation, i.e. FRES bit will be unset for < 250 us.
[in] | hdslHandle | |
[in] | addr | Address |
[in] | data | Data |
[in] | timeout | Timeout in microseconds |
int32_t HDSL_read_pc_short_msg | ( | HDSL_Handle | hdslHandle, |
uint8_t | addr, | ||
uint8_t * | data, | ||
uint64_t | timeout | ||
) |
Trigger a short message read operation using parameters channel. After the required registers are written for read operation, the firmware takes < 250 us for completing short message read operation, i.e. FRES bit will be unset for < 250 us.
[in] | hdslHandle | |
[in] | addr | Address |
[in] | data | Pointer to data buffer where read data will be stored |
[in] | timeout | Timeout in microseconds |
int32_t HDSL_write_pc_long_msg | ( | HDSL_Handle | hdslHandle, |
uint16_t | addr, | ||
uint8_t | offsetEnable, | ||
uint8_t | addrType, | ||
uint8_t | length, | ||
uint16_t | offset, | ||
uint64_t | timeout | ||
) |
Trigger a long message write operation using parameters channel. Call HDSL_write_pc_buffer before this to write the data to be sent using long message. After the required registers are written for write operation, the firmware takes < 3.5 ms for completing short message write operation, i.e. FREL bit will be unset for < 3.5 ms.
[in] | hdslHandle | |
[in] | addr | 10 bit address for long message |
[in] | offsetEnable | Addressing with offset enable/disable from HDSL_LongMessageAddrOffsetModes |
[in] | addrType | Addressing Type from HDSL_LongMessageAddrTypes |
[in] | length | Length from HDSL_LongMessageLengths |
[in] | offset | 15 bit address offset for long message (if offset is enabled in offsetEnable parameter) |
[in] | timeout | Timeout in microseconds |
int32_t HDSL_read_pc_long_msg | ( | HDSL_Handle | hdslHandle, |
uint16_t | addr, | ||
uint8_t | offsetEnable, | ||
uint8_t | addrType, | ||
uint8_t | length, | ||
uint16_t | offset, | ||
uint64_t | timeout | ||
) |
Trigger a long message read operation using parameters channel If this API returns SystemP_SUCCESS, call HDSL_read_pc_buffer after this to read the data received using long message. After the required registers are written for read operation, the firmware takes < 3.5 ms for completing short message read operation, i.e. FREL bit will be unset for < 3.5 ms.
[in] | hdslHandle | |
[in] | addr | 10 bit address for long message |
[in] | offsetEnable | Addressing with offset enable/disable from HDSL_LongMessageAddrOffsetModes |
[in] | addrType | Addressing Type from HDSL_LongMessageAddrTypes |
[in] | length | Length from HDSL_LongMessageLengths |
[in] | offset | 15 bit address offset for long message |
[in] | timeout | Timeout in microseconds |
void HDSL_write_pc_buffer | ( | HDSL_Handle | hdslHandle, |
uint8_t | buff_off, | ||
uint8_t | data | ||
) |
Write Parameters channel buffer for different bytes(bytes 0-7)
[in] | hdslHandle | |
[in] | buff_off | |
[in] | data |
uint8_t HDSL_read_pc_buffer | ( | HDSL_Handle | hdslHandle, |
uint8_t | buff_off | ||
) |
Returns Parameters channel buffer for different bytes(bytes 0-7)
[in] | hdslHandle | |
[in] | buff_off |
8 | bit integer value of PC_BUFFER from hdsl interface |
uint8_t HDSL_get_sync_ctrl | ( | HDSL_Handle | hdslHandle | ) |
Returns Synchronization control value.
[in] | hdslHandle |
8 | bit integer value of SYNC_CTRL from hdsl interface |
void HDSL_set_sync_ctrl | ( | HDSL_Handle | hdslHandle, |
uint8_t | val | ||
) |
Writes Synchronization control value.
[in] | hdslHandle | |
[in] | val |
uint8_t HDSL_get_master_qm | ( | HDSL_Handle | hdslHandle | ) |
Returns Quality monitoring value.
[in] | hdslHandle |
8 | bit integer value of MASTER_QM from hdsl interface |
uint8_t HDSL_get_edges | ( | HDSL_Handle | hdslHandle | ) |
Returns Cable bit sampling time control.
[in] | hdslHandle |
8 | bit integer value of EDGES from hdsl interface |
uint8_t HDSL_get_delay | ( | HDSL_Handle | hdslHandle | ) |
Returns Run time delay of system cable and signal strength.
[in] | hdslHandle |
8 | bit integer value of DELAY from hdsl interface |
uint8_t HDSL_get_enc_id | ( | HDSL_Handle | hdslHandle, |
int | byte | ||
) |
Read encoder id bytes(byte no. 0-2)
[in] | hdslHandle | |
[in] | byte |
8 | bit encoder bytes data from hdsl interface |
void HDSL_generate_memory_image | ( | HDSL_Handle | hdslHandle | ) |
Generates memory image.
[in] | hdslHandle |
void* HDSL_get_src_loc | ( | HDSL_Handle | hdslHandle | ) |
Get memory location for HDSL interface struct.
[in] | hdslHandle |
Pointer | containing base memeory address |
uint32_t HDSL_get_length | ( | HDSL_Handle | hdslHandle | ) |
Get size of memory used by HDSL interface struct.
[in] | hdslHandle |
Size | of the struct |
int32_t HDSL_config_copy_table | ( | HDSL_Handle | hdslHandle, |
HDSL_CopyTable * | copyTable | ||
) |
Configure the copy table entries for two overlayed firmware parts for channel 2.
[in] | hdslHandle | |
[in] | copyTable |
int32_t HDSL_config_channel_mask | ( | HDSL_Handle | hdslHandle, |
uint8_t | channelMask | ||
) |
Configure the channel mask.
[in] | hdslHandle | |
[in] | channelMask |