master/master.c
changeset 1952 7d9fb723fc4b
parent 1947 024a3c6aa3f7
child 1995 7d748d9cf9e8
child 2009 b5391b329b5d
equal deleted inserted replaced
1951:a1a6d7719f97 1952:7d9fb723fc4b
  2343 }
  2343 }
  2344 
  2344 
  2345 /*****************************************************************************/
  2345 /*****************************************************************************/
  2346 
  2346 
  2347 int ecrt_master_write_idn(ec_master_t *master, uint16_t slave_position,
  2347 int ecrt_master_write_idn(ec_master_t *master, uint16_t slave_position,
  2348         uint16_t idn, uint8_t *data, size_t data_size, uint16_t *error_code)
  2348         uint8_t drive_no, uint16_t idn, uint8_t *data, size_t data_size,
       
  2349         uint16_t *error_code)
  2349 {
  2350 {
  2350     ec_master_soe_request_t request;
  2351     ec_master_soe_request_t request;
  2351     int retval;
  2352     int retval;
  2352 
  2353 
       
  2354     if (drive_no > 7) {
       
  2355         EC_MASTER_ERR(master, "Invalid drive number!\n");
       
  2356         return -EINVAL;
       
  2357     }
       
  2358 
  2353     INIT_LIST_HEAD(&request.list);
  2359     INIT_LIST_HEAD(&request.list);
  2354     ec_soe_request_init(&request.req);
  2360     ec_soe_request_init(&request.req);
       
  2361     ec_soe_request_set_drive_no(&request.req, drive_no);
  2355     ec_soe_request_set_idn(&request.req, idn);
  2362     ec_soe_request_set_idn(&request.req, idn);
  2356 
  2363 
  2357     if (ec_soe_request_alloc(&request.req, data_size)) {
  2364     if (ec_soe_request_alloc(&request.req, data_size)) {
  2358         ec_soe_request_clear(&request.req);
  2365         ec_soe_request_clear(&request.req);
  2359         return -ENOMEM;
  2366         return -ENOMEM;
  2411 }
  2418 }
  2412 
  2419 
  2413 /*****************************************************************************/
  2420 /*****************************************************************************/
  2414 
  2421 
  2415 int ecrt_master_read_idn(ec_master_t *master, uint16_t slave_position,
  2422 int ecrt_master_read_idn(ec_master_t *master, uint16_t slave_position,
  2416         uint16_t idn, uint8_t *target, size_t target_size,
  2423         uint8_t drive_no, uint16_t idn, uint8_t *target, size_t target_size,
  2417         size_t *result_size, uint16_t *error_code)
  2424         size_t *result_size, uint16_t *error_code)
  2418 {
  2425 {
  2419     ec_master_soe_request_t request;
  2426     ec_master_soe_request_t request;
       
  2427 
       
  2428     if (drive_no > 7) {
       
  2429         EC_MASTER_ERR(master, "Invalid drive number!\n");
       
  2430         return -EINVAL;
       
  2431     }
  2420 
  2432 
  2421     INIT_LIST_HEAD(&request.list);
  2433     INIT_LIST_HEAD(&request.list);
  2422     ec_soe_request_init(&request.req);
  2434     ec_soe_request_init(&request.req);
       
  2435     ec_soe_request_set_drive_no(&request.req, drive_no);
  2423     ec_soe_request_set_idn(&request.req, idn);
  2436     ec_soe_request_set_idn(&request.req, idn);
  2424     ec_soe_request_read(&request.req);
  2437     ec_soe_request_read(&request.req);
  2425 
  2438 
  2426     if (down_interruptible(&master->master_sem))
  2439     if (down_interruptible(&master->master_sem))
  2427         return -EINTR;
  2440         return -EINTR;