lib/slave_config.c
changeset 1327 4d179b06dd3c
parent 1326 ef907b0b5125
child 1352 275d2fdeab48
equal deleted inserted replaced
1326:ef907b0b5125 1327:4d179b06dd3c
    71     data.config_index = sc->index;
    71     data.config_index = sc->index;
    72     data.sync_index = sync_index;
    72     data.sync_index = sync_index;
    73     data.index = pdo_index;
    73     data.index = pdo_index;
    74 
    74 
    75     if (ioctl(sc->master->fd, EC_IOCTL_SC_ADD_PDO, &data) == -1) {
    75     if (ioctl(sc->master->fd, EC_IOCTL_SC_ADD_PDO, &data) == -1) {
    76         fprintf(stderr, "Failed to add Pdo: %s\n",
    76         fprintf(stderr, "Failed to add PDO: %s\n",
    77                 strerror(errno));
    77                 strerror(errno));
    78         return -1;  // FIXME
    78         return -1;  // FIXME
    79     }
    79     }
    80     
    80     
    81     return 0;
    81     return 0;
    90 
    90 
    91     data.config_index = sc->index;
    91     data.config_index = sc->index;
    92     data.sync_index = sync_index;
    92     data.sync_index = sync_index;
    93 
    93 
    94     if (ioctl(sc->master->fd, EC_IOCTL_SC_CLEAR_PDOS, &data) == -1) {
    94     if (ioctl(sc->master->fd, EC_IOCTL_SC_CLEAR_PDOS, &data) == -1) {
    95         fprintf(stderr, "Failed to clear Pdos: %s\n",
    95         fprintf(stderr, "Failed to clear PDOs: %s\n",
    96                 strerror(errno));
    96                 strerror(errno));
    97     }
    97     }
    98 }
    98 }
    99 
    99 
   100 /*****************************************************************************/
   100 /*****************************************************************************/
   110     data.entry_index = entry_index;
   110     data.entry_index = entry_index;
   111     data.entry_subindex = entry_subindex;
   111     data.entry_subindex = entry_subindex;
   112     data.entry_bit_length = entry_bit_length;
   112     data.entry_bit_length = entry_bit_length;
   113 
   113 
   114     if (ioctl(sc->master->fd, EC_IOCTL_SC_ADD_ENTRY, &data) == -1) {
   114     if (ioctl(sc->master->fd, EC_IOCTL_SC_ADD_ENTRY, &data) == -1) {
   115         fprintf(stderr, "Failed to add Pdo entry: %s\n",
   115         fprintf(stderr, "Failed to add PDO entry: %s\n",
   116                 strerror(errno));
   116                 strerror(errno));
   117         return -1;  // FIXME
   117         return -1;  // FIXME
   118     }
   118     }
   119     
   119     
   120     return 0;
   120     return 0;
   129 
   129 
   130     data.config_index = sc->index;
   130     data.config_index = sc->index;
   131     data.index = pdo_index;
   131     data.index = pdo_index;
   132 
   132 
   133     if (ioctl(sc->master->fd, EC_IOCTL_SC_CLEAR_ENTRIES, &data) == -1) {
   133     if (ioctl(sc->master->fd, EC_IOCTL_SC_CLEAR_ENTRIES, &data) == -1) {
   134         fprintf(stderr, "Failed to clear Pdo entries: %s\n",
   134         fprintf(stderr, "Failed to clear PDO entries: %s\n",
   135                 strerror(errno));
   135                 strerror(errno));
   136     }
   136     }
   137 }
   137 }
   138 
   138 
   139 /*****************************************************************************/
   139 /*****************************************************************************/
   217     data.entry_subindex = subindex;
   217     data.entry_subindex = subindex;
   218     data.domain_index = domain->index;
   218     data.domain_index = domain->index;
   219 
   219 
   220     ret = ioctl(sc->master->fd, EC_IOCTL_SC_REG_PDO_ENTRY, &data);
   220     ret = ioctl(sc->master->fd, EC_IOCTL_SC_REG_PDO_ENTRY, &data);
   221     if (ret == -1) {
   221     if (ret == -1) {
   222         fprintf(stderr, "Failed to register Pdo entry: %s\n",
   222         fprintf(stderr, "Failed to register PDO entry: %s\n",
   223                 strerror(errno));
   223                 strerror(errno));
   224         return -2; // FIXME
   224         return -2; // FIXME
   225     }
   225     }
   226 
   226 
   227     if (bit_position) {
   227     if (bit_position) {
   228         *bit_position = data.bit_position;
   228         *bit_position = data.bit_position;
   229     } else {
   229     } else {
   230         if (data.bit_position) {
   230         if (data.bit_position) {
   231             fprintf(stderr, "Pdo entry 0x%04X:%02X does not byte-align "
   231             fprintf(stderr, "PDO entry 0x%04X:%02X does not byte-align "
   232                     "in config %u:%u.\n", index, subindex,
   232                     "in config %u:%u.\n", index, subindex,
   233                     sc->alias, sc->position);
   233                     sc->alias, sc->position);
   234             return -3; // FIXME
   234             return -3; // FIXME
   235         }
   235         }
   236     }
   236     }
   250     data.subindex = subindex;
   250     data.subindex = subindex;
   251     data.data = sdo_data;
   251     data.data = sdo_data;
   252     data.size = size;
   252     data.size = size;
   253 
   253 
   254     if (ioctl(sc->master->fd, EC_IOCTL_SC_REG_PDO_ENTRY, &data) == -1) {
   254     if (ioctl(sc->master->fd, EC_IOCTL_SC_REG_PDO_ENTRY, &data) == -1) {
   255         fprintf(stderr, "Failed to configure Sdo.\n");
   255         fprintf(stderr, "Failed to configure SDO.\n");
   256         return -1; // FIXME
   256         return -1; // FIXME
   257     }
   257     }
   258 
   258 
   259     return 0;
   259     return 0;
   260 }
   260 }