master/ioctl.h
changeset 978 2962baf7e6d1
parent 974 5868944a6456
child 980 c07dd38243ba
equal deleted inserted replaced
977:167ae3e76cc7 978:2962baf7e6d1
    65 #define EC_IOCTL_SLAVE_STATE   EC_IOW(0x0a, ec_ioctl_slave_state_t)
    65 #define EC_IOCTL_SLAVE_STATE   EC_IOW(0x0a, ec_ioctl_slave_state_t)
    66 #define EC_IOCTL_SDO          EC_IOWR(0x0b, ec_ioctl_sdo_t)
    66 #define EC_IOCTL_SDO          EC_IOWR(0x0b, ec_ioctl_sdo_t)
    67 #define EC_IOCTL_SDO_ENTRY    EC_IOWR(0x0c, ec_ioctl_sdo_entry_t)
    67 #define EC_IOCTL_SDO_ENTRY    EC_IOWR(0x0c, ec_ioctl_sdo_entry_t)
    68 #define EC_IOCTL_SDO_UPLOAD   EC_IOWR(0x0d, ec_ioctl_sdo_upload_t)
    68 #define EC_IOCTL_SDO_UPLOAD   EC_IOWR(0x0d, ec_ioctl_sdo_upload_t)
    69 #define EC_IOCTL_SDO_DOWNLOAD  EC_IOW(0x0e, ec_ioctl_sdo_download_t)
    69 #define EC_IOCTL_SDO_DOWNLOAD  EC_IOW(0x0e, ec_ioctl_sdo_download_t)
    70 
    70 #define EC_IOCTL_SII_READ     EC_IOWR(0x0f, ec_ioctl_sii_read_t)
    71 /*****************************************************************************/
    71 
    72 
    72 /*****************************************************************************/
    73 typedef struct {
    73 
    74     unsigned int slave_count;
    74 typedef struct {
       
    75     uint32_t slave_count;
    75     uint8_t mode;
    76     uint8_t mode;
    76     struct {
    77     struct {
    77         uint8_t address[6];
    78         uint8_t address[6];
    78         uint8_t attached;
    79         uint8_t attached;
    79         unsigned int tx_count;
    80         uint32_t tx_count;
    80         unsigned int rx_count;
    81         uint32_t rx_count;
    81     } devices[2];
    82     } devices[2];
    82 } ec_ioctl_master_t;
    83 } ec_ioctl_master_t;
    83 
    84 
    84 /*****************************************************************************/
    85 /*****************************************************************************/
    85 
    86 
    86 #define EC_IOCTL_SLAVE_NAME_SIZE 104
    87 #define EC_IOCTL_SLAVE_NAME_SIZE 100
    87 
    88 
    88 typedef struct {
    89 typedef struct {
    89     // input
    90     // input
    90     uint16_t position;
    91     uint16_t position;
    91 
    92 
    96     uint32_t serial_number;
    97     uint32_t serial_number;
    97     uint16_t alias;
    98     uint16_t alias;
    98     uint8_t state;
    99     uint8_t state;
    99     uint8_t sync_count;
   100     uint8_t sync_count;
   100     uint16_t sdo_count;
   101     uint16_t sdo_count;
       
   102     uint32_t sii_nwords;
   101     char name[EC_IOCTL_SLAVE_NAME_SIZE];
   103     char name[EC_IOCTL_SLAVE_NAME_SIZE];
   102 } ec_ioctl_slave_t;
   104 } ec_ioctl_slave_t;
   103 
   105 
   104 /*****************************************************************************/
   106 /*****************************************************************************/
   105 
   107 
   106 typedef struct {
   108 typedef struct {
   107     // inputs
   109     // inputs
   108     uint16_t slave_position;
   110     uint16_t slave_position;
   109     unsigned int sync_index;
   111     uint32_t sync_index;
   110 
   112 
   111     // outputs
   113     // outputs
   112     uint16_t physical_start_address;
   114     uint16_t physical_start_address;
   113     uint16_t default_size;
   115     uint16_t default_size;
   114     uint8_t control_register;
   116     uint8_t control_register;
   122 #define EC_IOCTL_PDO_NAME_SIZE 114
   124 #define EC_IOCTL_PDO_NAME_SIZE 114
   123 
   125 
   124 typedef struct {
   126 typedef struct {
   125     // inputs
   127     // inputs
   126     uint16_t slave_position;
   128     uint16_t slave_position;
   127     unsigned int sync_index;
   129     uint32_t sync_index;
   128     unsigned int pdo_pos;
   130     uint32_t pdo_pos;
   129 
   131 
   130     // outputs
   132     // outputs
   131     uint8_t dir;
   133     uint8_t dir;
   132     uint16_t index;
   134     uint16_t index;
   133     uint8_t entry_count;
   135     uint8_t entry_count;
   139 #define EC_IOCTL_PDO_ENTRY_NAME_SIZE 110
   141 #define EC_IOCTL_PDO_ENTRY_NAME_SIZE 110
   140 
   142 
   141 typedef struct {
   143 typedef struct {
   142     // inputs
   144     // inputs
   143     uint16_t slave_position;
   145     uint16_t slave_position;
   144     unsigned int sync_index;
   146     uint32_t sync_index;
   145     unsigned int pdo_pos;
   147     uint32_t pdo_pos;
   146     unsigned int entry_pos;
   148     uint32_t entry_pos;
   147 
   149 
   148     // outputs
   150     // outputs
   149     uint16_t index;
   151     uint16_t index;
   150     uint8_t subindex;
   152     uint8_t subindex;
   151     uint8_t bit_length;
   153     uint8_t bit_length;
   154 
   156 
   155 /*****************************************************************************/
   157 /*****************************************************************************/
   156 
   158 
   157 typedef struct {
   159 typedef struct {
   158     // inputs
   160     // inputs
   159 	unsigned int index;
   161 	uint32_t index;
   160 
   162 
   161     // outputs
   163     // outputs
   162 	unsigned int data_size;
   164 	uint32_t data_size;
   163 	uint32_t logical_base_address;
   165 	uint32_t logical_base_address;
   164 	uint16_t working_counter;
   166 	uint16_t working_counter;
   165 	uint16_t expected_working_counter;
   167 	uint16_t expected_working_counter;
   166     unsigned int fmmu_count;
   168     uint32_t fmmu_count;
   167 } ec_ioctl_domain_t;
   169 } ec_ioctl_domain_t;
   168 
   170 
   169 /*****************************************************************************/
   171 /*****************************************************************************/
   170 
   172 
   171 typedef struct {
   173 typedef struct {
   172     // inputs
   174     // inputs
   173 	unsigned int domain_index;
   175 	uint32_t domain_index;
   174 	unsigned int fmmu_index;
   176 	uint32_t fmmu_index;
   175 
   177 
   176     // outputs
   178     // outputs
   177     uint16_t slave_config_alias;
   179     uint16_t slave_config_alias;
   178     uint16_t slave_config_position;
   180     uint16_t slave_config_position;
   179     uint8_t fmmu_dir;
   181     uint8_t fmmu_dir;
   180 	uint32_t logical_address;
   182 	uint32_t logical_address;
   181     unsigned int data_size;
   183     uint32_t data_size;
   182 } ec_ioctl_domain_fmmu_t;
   184 } ec_ioctl_domain_fmmu_t;
   183 
   185 
   184 /*****************************************************************************/
   186 /*****************************************************************************/
   185 
   187 
   186 typedef struct {
   188 typedef struct {
   187     // inputs
   189     // inputs
   188 	unsigned int domain_index;
   190 	uint32_t domain_index;
   189     unsigned int data_size;
   191     uint32_t data_size;
   190     unsigned char *target;
   192     unsigned char *target;
   191 } ec_ioctl_data_t;
   193 } ec_ioctl_data_t;
   192 
   194 
   193 /*****************************************************************************/
   195 /*****************************************************************************/
   194 
   196 
   234 typedef struct {
   236 typedef struct {
   235     // inputs
   237     // inputs
   236     uint16_t slave_position;
   238     uint16_t slave_position;
   237     uint16_t sdo_index;
   239     uint16_t sdo_index;
   238     uint8_t sdo_entry_subindex;
   240     uint8_t sdo_entry_subindex;
   239     unsigned int target_size;
   241     uint32_t target_size;
   240     uint8_t *target;
   242     uint8_t *target;
   241 
   243 
   242     // outputs
   244     // outputs
   243     unsigned int data_size;
   245     uint32_t data_size;
   244 } ec_ioctl_sdo_upload_t;
   246 } ec_ioctl_sdo_upload_t;
   245 
   247 
   246 /*****************************************************************************/
   248 /*****************************************************************************/
   247 
   249 
   248 typedef struct {
   250 typedef struct {
   249     // inputs
   251     // inputs
   250     uint16_t slave_position;
   252     uint16_t slave_position;
   251     uint16_t sdo_index;
   253     uint16_t sdo_index;
   252     uint8_t sdo_entry_subindex;
   254     uint8_t sdo_entry_subindex;
   253     unsigned int data_size;
   255     uint32_t data_size;
   254     uint8_t *data;
   256     uint8_t *data;
   255 } ec_ioctl_sdo_download_t;
   257 } ec_ioctl_sdo_download_t;
   256 
   258 
   257 /*****************************************************************************/
   259 /*****************************************************************************/
   258 
   260 
       
   261 typedef struct {
       
   262     // inputs
       
   263     uint16_t slave_position;
       
   264     uint16_t offset;
       
   265     uint32_t nwords;
       
   266     uint16_t *words;
       
   267 } ec_ioctl_sii_read_t;
       
   268 
       
   269 /*****************************************************************************/
       
   270 
   259 #endif
   271 #endif