36 // EtherCAT |
36 // EtherCAT |
37 static ec_master_t *master = NULL; |
37 static ec_master_t *master = NULL; |
38 static ec_domain_t *domain1 = NULL; |
38 static ec_domain_t *domain1 = NULL; |
39 static int first_sent=0; |
39 static int first_sent=0; |
40 %(slaves_declaration)s |
40 %(slaves_declaration)s |
|
41 #define SLOGF(level, format, args...)\ |
|
42 {\ |
|
43 char sbuf[256];\ |
|
44 int slen = snprintf(sbuf , sizeof(sbuf) , format , ##args);\ |
|
45 LogMessage(level, sbuf, slen);\ |
|
46 } |
41 |
47 |
42 /* Beremiz plugin functions */ |
48 /* Beremiz plugin functions */ |
43 int __init_%(location)s(int argc,char **argv) |
49 int __init_%(location)s(int argc,char **argv) |
44 { |
50 { |
45 uint32_t abort_code; |
51 uint32_t abort_code; |
56 |
62 |
57 // slaves PDO configuration |
63 // slaves PDO configuration |
58 %(slaves_configuration)s |
64 %(slaves_configuration)s |
59 |
65 |
60 if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) { |
66 if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) { |
61 fprintf(stderr, "PDO entry registration failed!\n"); |
67 SLOGF(LOG_CRITICAL, "PDO entry registration failed!\n"); |
62 return -1; |
68 return -1; |
63 } |
69 } |
64 |
70 |
65 ecrt_master_set_send_interval(master, common_ticktime__); |
71 ecrt_master_set_send_interval(master, common_ticktime__); |
66 |
72 |
71 %(slaves_output_pdos_default_values_extraction)s |
77 %(slaves_output_pdos_default_values_extraction)s |
72 |
78 |
73 sprintf(&rt_dev_file[0],"%%s%%u",EC_RTDM_DEV_FILE_NAME,0); |
79 sprintf(&rt_dev_file[0],"%%s%%u",EC_RTDM_DEV_FILE_NAME,0); |
74 rt_fd = rt_dev_open( &rt_dev_file[0], 0); |
80 rt_fd = rt_dev_open( &rt_dev_file[0], 0); |
75 if (rt_fd < 0) { |
81 if (rt_fd < 0) { |
76 fprintf(stderr, "Can't open %%s\n", &rt_dev_file[0]); |
82 SLOGF(LOG_CRITICAL, "Can't open %%s\n", &rt_dev_file[0]); |
77 return -1; |
83 return -1; |
78 } |
84 } |
79 |
85 |
80 // attach the master over rtdm driver |
86 // attach the master over rtdm driver |
81 MstrAttach.domainindex = ecrt_domain_index(domain1); |
87 MstrAttach.domainindex = ecrt_domain_index(domain1); |
82 rtstatus = ecrt_rtdm_master_attach(rt_fd, &MstrAttach); |
88 rtstatus = ecrt_rtdm_master_attach(rt_fd, &MstrAttach); |
83 if (rtstatus < 0) { |
89 if (rtstatus < 0) { |
84 fprintf(stderr, "Cannot attach to master over rtdm\n"); |
90 SLOGF(LOG_CRITICAL, "Cannot attach to master over rtdm\n"); |
85 return -1; |
91 return -1; |
86 } |
92 } |
87 |
93 |
88 if (ecrt_master_activate(master)) |
94 if (ecrt_master_activate(master)) |
89 return -1; |
95 return -1; |
90 |
96 |
91 if (!(domain1_pd = ecrt_domain_data(domain1))) { |
97 if (!(domain1_pd = ecrt_domain_data(domain1))) { |
92 fprintf(stderr, "domain1_pd: 0x%%.6lx\n", (unsigned long)domain1_pd); |
98 SLOGF(LOG_CRITICAL, "domain1_pd: 0x%%.6lx\n", (unsigned long)domain1_pd); |
93 return -1; |
99 return -1; |
94 } |
100 } |
95 |
101 |
96 fprintf(stdout, "Master %(master_number)d activated...\n"); |
102 SLOGF(LOG_INFO, "Master %(master_number)d activated...\n"); |
97 |
103 |
98 first_sent = 0; |
104 first_sent = 0; |
99 |
105 |
100 return 0; |
106 return 0; |
101 } |
107 } |