master/fsm_master.c
changeset 1386 95ec1e9bcb53
parent 1385 241a7511eee9
child 1388 3c886ec376f5
equal deleted inserted replaced
1385:241a7511eee9 1386:95ec1e9bcb53
   351         if (master->debug_level)
   351         if (master->debug_level)
   352             EC_DBG("Processing phy request for slave %u, "
   352             EC_DBG("Processing phy request for slave %u, "
   353                     "offset 0x%04x, length %u...\n",
   353                     "offset 0x%04x, length %u...\n",
   354                     request->slave->ring_position,
   354                     request->slave->ring_position,
   355                     request->offset, request->length);
   355                     request->offset, request->length);
       
   356 
       
   357         if (request->length > fsm->datagram->mem_size) {
       
   358             EC_ERR("Request length (%u) exceeds maximum "
       
   359                     "datagram size (%u)!\n", request->length,
       
   360                     fsm->datagram->mem_size);
       
   361             request->state = EC_INT_REQUEST_FAILURE;
       
   362             wake_up(&master->phy_queue);
       
   363             continue;
       
   364         }
       
   365 
   356         fsm->phy_request = request;
   366         fsm->phy_request = request;
   357 
   367 
   358         if (request->dir == EC_DIR_INPUT) {
   368         if (request->dir == EC_DIR_INPUT) {
   359             ec_datagram_fprd(fsm->datagram, request->slave->station_address,
   369             ec_datagram_fprd(fsm->datagram, request->slave->station_address,
   360                     request->offset, request->length);
   370                     request->offset, request->length);
   361             ec_datagram_zero(fsm->datagram);
   371             ec_datagram_zero(fsm->datagram);
   362         } else {
   372         } else {
   363             if (request->length > fsm->datagram->mem_size) {
       
   364                 EC_ERR("Request length (%u) exceeds maximum "
       
   365                         "datagram size (%u)!\n", request->length,
       
   366                         fsm->datagram->mem_size);
       
   367                 request->state = EC_INT_REQUEST_FAILURE;
       
   368                 wake_up(&master->phy_queue);
       
   369                 continue;
       
   370             }
       
   371             ec_datagram_fpwr(fsm->datagram, request->slave->station_address,
   373             ec_datagram_fpwr(fsm->datagram, request->slave->station_address,
   372                     request->offset, request->length);
   374                     request->offset, request->length);
   373             memcpy(fsm->datagram->data, request->data, request->length);
   375             memcpy(fsm->datagram->data, request->data, request->length);
   374         }
   376         }
   375         fsm->retries = EC_FSM_RETRIES;
   377         fsm->retries = EC_FSM_RETRIES;