rtdm/module.c
changeset 2071 e797dc47018b
parent 2058 543c4ce9e86e
equal deleted inserted replaced
2070:1e2a9fcb3095 2071:e797dc47018b
   162   return (nfak*wd);
   162   return (nfak*wd);
   163 }
   163 }
   164 
   164 
   165 
   165 
   166 /**********************************************************/
   166 /**********************************************************/
   167 /*            DRIVER sendcallback                         */
   167 /*            DRIVER lockcallback                         */
   168 /**********************************************************/
   168 /**********************************************************/
   169 void send_callback(void *cb_data)
   169 void request_lock_callback(void *cb_data)
   170 {
   170 {
   171     EC_RTDM_DRV_STRUCT * pdrvstruc;
   171     EC_RTDM_DRV_STRUCT * pdrvstruc;
   172     
   172     
   173     pdrvstruc = (EC_RTDM_DRV_STRUCT*)cb_data;
   173     pdrvstruc = (EC_RTDM_DRV_STRUCT*)cb_data;
   174     if (pdrvstruc->master)
   174     if (pdrvstruc->master)
   175         {
   175         {
   176             my_mutex_acquire(&pdrvstruc->masterlock,TM_INFINITE);
   176             my_mutex_acquire(&pdrvstruc->masterlock,TM_INFINITE);
   177             ecrt_master_send_ext(pdrvstruc->master);
   177         }
   178             my_mutex_release(&pdrvstruc->masterlock);
       
   179       }
       
   180 }
   178 }
   181 
   179 
   182 /*****************************************************************************/
   180 /*****************************************************************************/
   183 
   181 
   184 void receive_callback(void *cb_data)
   182 void release_lock_callback(void *cb_data)
   185 {
   183 {
   186     EC_RTDM_DRV_STRUCT * pdrvstruc;
   184     EC_RTDM_DRV_STRUCT * pdrvstruc;
   187 
   185 
   188     pdrvstruc = (EC_RTDM_DRV_STRUCT*)cb_data;
   186     pdrvstruc = (EC_RTDM_DRV_STRUCT*)cb_data;
   189     if (pdrvstruc->master)
   187     if (pdrvstruc->master)
   190       {
   188       {
   191           my_mutex_acquire(&pdrvstruc->masterlock,TM_INFINITE);
       
   192           ecrt_master_receive(pdrvstruc->master);
       
   193           my_mutex_release(&pdrvstruc->masterlock);      
   189           my_mutex_release(&pdrvstruc->masterlock);      
   194     }
   190       }
   195 }
   191 }
   196 
   192 
   197 
   193 
   198 
   194 
   199 
   195 
   558                                 
   554                                 
   559                                 // set device name
   555                                 // set device name
   560                                 snprintf(&pdrvstruc->mutexname[0],sizeof(pdrvstruc->mutexname)-1,"ETHrtdmLOCK%d",pdrvstruc->masterno);
   556                                 snprintf(&pdrvstruc->mutexname[0],sizeof(pdrvstruc->mutexname)-1,"ETHrtdmLOCK%d",pdrvstruc->masterno);
   561                                 EC_RTDM_INFO(pdrvstruc->masterno,"Creating Master mutex %s!\n",&pdrvstruc->mutexname[0]);
   557                                 EC_RTDM_INFO(pdrvstruc->masterno,"Creating Master mutex %s!\n",&pdrvstruc->mutexname[0]);
   562                                 my_mutex_create(&pdrvstruc->masterlock,&pdrvstruc->mutexname[0]);
   558                                 my_mutex_create(&pdrvstruc->masterlock,&pdrvstruc->mutexname[0]);
   563                                 //ecrt_release_master(mstr);
   559                                 ecrt_master_callbacks(pdrvstruc->master, request_lock_callback, release_lock_callback, pdrvstruc);
   564                                 ecrt_master_callbacks(pdrvstruc->master, send_callback, receive_callback, pdrvstruc);
       
   565                                 EC_RTDM_INFO(pdrvstruc->masterno,"MSTR ATTACH done domain=%u!\n",(unsigned int)pdrvstruc->domain);
   560                                 EC_RTDM_INFO(pdrvstruc->masterno,"MSTR ATTACH done domain=%u!\n",(unsigned int)pdrvstruc->domain);
   566                                 pdrvstruc->isattached=1;
   561                                 pdrvstruc->isattached=1;
   567                                 ret = 0;
   562                                 ret = 0;
   568                             }
   563                             }
   569                         
   564