Line data Source code
1 : #include <limits.h> 2 : #include <unistd.h> 3 : #include <string.h> 4 : 5 : #include "felixbus/felixbus.h" 6 : #include "bus.h" 7 : #include "log.h" 8 : 9 : #define MAX_LINE_SIZE (4096) 10 : 11 : void 12 83 : bus_write(felix_bus bus, struct elink_descr* elinks, unsigned num, int pubsub, int unbuffered, struct config* cfg) 13 : { 14 210 : for(unsigned int i = 0; i < num; i++) { 15 127 : struct elink_descr* e = elinks+i; 16 127 : unsigned int max_sid = e->has_streams ? 256 : 1; 17 1274 : for(unsigned int sid = 0; sid < max_sid; sid++) { 18 1147 : uint8_t to_flx = !pubsub; 19 1147 : uint8_t virtual = e->type == TTC; 20 1147 : uint64_t fid = get_fid(cfg->co, e->elink + cfg->elink_offset, sid, cfg->vid, to_flx, virtual); 21 1147 : struct felix_bus_info info; 22 1147 : if ((cfg->ttcport != 0) && (e->type == TTC)) { 23 4 : info.ip = cfg->ip; 24 4 : info.port = cfg->ttcport; 25 4 : info.unbuffered = false; 26 4 : info.pubsub = true; 27 4 : info.netio_pages = cfg->ttc_netio_pages; 28 4 : info.netio_pagesize = cfg->ttc_netio_pagesize; 29 : } 30 1143 : else if ((cfg->dcsport != 0) && ((e->type == DCS) || (e->type == IC))){ 31 0 : info.ip = cfg->ip; 32 0 : info.port = cfg->dcsport; 33 0 : info.unbuffered = !cfg->dcs_buffered; 34 0 : info.pubsub = true; 35 0 : info.netio_pages = cfg->dcs_netio_pages; 36 0 : info.netio_pagesize = cfg->dcs_netio_pagesize; 37 : } 38 : else { 39 1143 : info.ip = cfg->ip; 40 1143 : info.port = cfg->port; 41 1143 : info.unbuffered = unbuffered; 42 1143 : info.pubsub = pubsub; 43 1143 : info.netio_pages = cfg->netio_pages; 44 1143 : info.netio_pagesize = cfg->netio_pagesize; 45 : } 46 1147 : felix_bus_write(bus, fid, &info); 47 : } 48 : } 49 83 : }