master/ethernet.c
changeset 325 7833cf70c4f2
parent 322 fceb7b6e0a06
child 336 360e5287c888
equal deleted inserted replaced
324:9aa51cbdbfae 325:7833cf70c4f2
   153    Unregisteres the net_device and frees allocated memory.
   153    Unregisteres the net_device and frees allocated memory.
   154 */
   154 */
   155 
   155 
   156 void ec_eoe_clear(ec_eoe_t *eoe /**< EoE handler */)
   156 void ec_eoe_clear(ec_eoe_t *eoe /**< EoE handler */)
   157 {
   157 {
   158     if (eoe->dev) { // TODO: dev never NULL?
   158     unregister_netdev(eoe->dev);
   159         unregister_netdev(eoe->dev);
   159     free_netdev(eoe->dev);
   160         free_netdev(eoe->dev);
       
   161     }
       
   162 
   160 
   163     // empty transmit queue
   161     // empty transmit queue
   164     ec_eoe_flush(eoe);
   162     ec_eoe_flush(eoe);
   165 
   163 
   166     if (eoe->tx_frame) {
   164     if (eoe->tx_frame) {
   290 unsigned int ec_eoe_active(const ec_eoe_t *eoe /**< EoE handler */)
   288 unsigned int ec_eoe_active(const ec_eoe_t *eoe /**< EoE handler */)
   291 {
   289 {
   292     return eoe->slave && eoe->opened;
   290     return eoe->slave && eoe->opened;
   293 }
   291 }
   294 
   292 
   295 /*****************************************************************************/
       
   296 
       
   297 /**
       
   298    Prints EoE handler information.
       
   299 */
       
   300 
       
   301 void ec_eoe_print(const ec_eoe_t *eoe /**< EoE handler */)
       
   302 {
       
   303     EC_INFO("  EoE handler %s\n", eoe->dev->name);
       
   304     EC_INFO("    State: %s\n", eoe->opened ? "opened" : "closed");
       
   305     if (eoe->slave)
       
   306         EC_INFO("    Coupled to slave %i.\n", eoe->slave->ring_position);
       
   307     else
       
   308         EC_INFO("    Not coupled.\n");
       
   309 }
       
   310 
       
   311 /******************************************************************************
   293 /******************************************************************************
   312  *  STATE PROCESSING FUNCTIONS
   294  *  STATE PROCESSING FUNCTIONS
   313  *****************************************************************************/
   295  *****************************************************************************/
   314 
   296 
   315 /**
   297 /**
   336    datagram, if new data is available.
   318    datagram, if new data is available.
   337 */
   319 */
   338 
   320 
   339 void ec_eoe_state_rx_check(ec_eoe_t *eoe /**< EoE handler */)
   321 void ec_eoe_state_rx_check(ec_eoe_t *eoe /**< EoE handler */)
   340 {
   322 {
   341     if (eoe->datagram.state != EC_CMD_RECEIVED) {
   323     if (eoe->datagram.state != EC_DATAGRAM_RECEIVED) {
   342         eoe->stats.rx_errors++;
   324         eoe->stats.rx_errors++;
   343         eoe->state = ec_eoe_state_tx_start;
   325         eoe->state = ec_eoe_state_tx_start;
   344         return;
   326         return;
   345     }
   327     }
   346 
   328 
   367     size_t rec_size, data_size;
   349     size_t rec_size, data_size;
   368     uint8_t *data, frame_type, last_fragment, time_appended;
   350     uint8_t *data, frame_type, last_fragment, time_appended;
   369     uint8_t frame_number, fragment_offset, fragment_number;
   351     uint8_t frame_number, fragment_offset, fragment_number;
   370     off_t offset;
   352     off_t offset;
   371 
   353 
   372     if (eoe->datagram.state != EC_CMD_RECEIVED) {
   354     if (eoe->datagram.state != EC_DATAGRAM_RECEIVED) {
   373         eoe->stats.rx_errors++;
   355         eoe->stats.rx_errors++;
   374         eoe->state = ec_eoe_state_tx_start;
   356         eoe->state = ec_eoe_state_tx_start;
   375         return;
   357         return;
   376     }
   358     }
   377 
   359 
   568    fragment, if necessary.
   550    fragment, if necessary.
   569 */
   551 */
   570 
   552 
   571 void ec_eoe_state_tx_sent(ec_eoe_t *eoe /**< EoE handler */)
   553 void ec_eoe_state_tx_sent(ec_eoe_t *eoe /**< EoE handler */)
   572 {
   554 {
   573     if (eoe->datagram.state != EC_CMD_RECEIVED) {
   555     if (eoe->datagram.state != EC_DATAGRAM_RECEIVED) {
   574         eoe->stats.tx_errors++;
   556         eoe->stats.tx_errors++;
   575         eoe->state = ec_eoe_state_rx_start;
   557         eoe->state = ec_eoe_state_rx_start;
   576         return;
   558         return;
   577     }
   559     }
   578 
   560