master/slave_config.c
changeset 1952 7d9fb723fc4b
parent 1944 73896ef6d077
child 1966 23c638a81fe7
child 1995 7d748d9cf9e8
equal deleted inserted replaced
1951:a1a6d7719f97 1952:7d9fb723fc4b
   936     }
   936     }
   937 }
   937 }
   938 
   938 
   939 /*****************************************************************************/
   939 /*****************************************************************************/
   940 
   940 
   941 int ecrt_slave_config_idn(ec_slave_config_t *sc, uint16_t idn,
   941 int ecrt_slave_config_idn(ec_slave_config_t *sc, uint8_t drive_no, 
   942         ec_al_state_t state, const uint8_t *data, size_t size)
   942         uint16_t idn, ec_al_state_t state, const uint8_t *data,
       
   943         size_t size)
   943 {
   944 {
   944     ec_slave_t *slave = sc->slave;
   945     ec_slave_t *slave = sc->slave;
   945     ec_soe_request_t *req;
   946     ec_soe_request_t *req;
   946     int ret;
   947     int ret;
   947 
   948 
   948     EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, idn = 0x%04X, state = %u, "
   949     EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, drive_no = %u, idn = 0x%04X, "
   949             "data = 0x%p, size = %zu)\n",
   950             "state = %u, data = 0x%p, size = %zu)\n",
   950             __func__, sc, idn, state, data, size);
   951             __func__, sc, drive_no, idn, state, data, size);
       
   952 
       
   953     if (drive_no > 7) {
       
   954         EC_CONFIG_ERR(sc, "Invalid drive number!\n");
       
   955         return -EINVAL;
       
   956     }
   951 
   957 
   952     if (state != EC_AL_STATE_PREOP && state != EC_AL_STATE_SAFEOP) {
   958     if (state != EC_AL_STATE_PREOP && state != EC_AL_STATE_SAFEOP) {
   953         EC_CONFIG_ERR(sc, "AL state for IDN config"
   959         EC_CONFIG_ERR(sc, "AL state for IDN config"
   954                 " must be PREOP or SAFEOP!\n");
   960                 " must be PREOP or SAFEOP!\n");
   955         return -EINVAL;
   961         return -EINVAL;
   965                 " IDN configuration!\n");
   971                 " IDN configuration!\n");
   966         return -ENOMEM;
   972         return -ENOMEM;
   967     }
   973     }
   968 
   974 
   969     ec_soe_request_init(req);
   975     ec_soe_request_init(req);
       
   976     ec_soe_request_set_drive_no(req, drive_no);
   970     ec_soe_request_set_idn(req, idn);
   977     ec_soe_request_set_idn(req, idn);
   971     req->al_state = state;
   978     req->al_state = state;
   972 
   979 
   973     ret = ec_soe_request_copy_data(req, data, size);
   980     ret = ec_soe_request_copy_data(req, data, size);
   974     if (ret < 0) {
   981     if (ret < 0) {