int onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value) { switch(control) { case ONLP_SFP_CONTROL_TX_DISABLE: { int rv; ONLP_IF_ERROR_RETURN(rv = tx_enable_get__(port, value)); *value = ! *value; return ONLP_STATUS_OK; } case ONLP_SFP_CONTROL_RX_LOS: { uint32_t flags = 0; ONLP_IF_ERROR_RETURN(control_flags_get__(port, &flags)); *value = (flags & ONLP_SFP_CONTROL_FLAG_RX_LOS) ? 1 : 0; return ONLP_STATUS_OK; } case ONLP_SFP_CONTROL_TX_FAULT: { uint32_t flags = 0; ONLP_IF_ERROR_RETURN(control_flags_get__(port, &flags)); *value = (flags & ONLP_SFP_CONTROL_FLAG_TX_FAULT) ? 1 : 0; return ONLP_STATUS_OK; } default: return ONLP_STATUS_E_UNSUPPORTED; } }
int onlp_i2c_modifyb(int bus, uint8_t addr, uint8_t offset, uint8_t andmask, uint8_t ormask, uint32_t flags) { int v; ONLP_IF_ERROR_RETURN(v=onlp_i2c_readb(bus, addr, offset, flags)); v &= andmask; v |= ormask; return onlp_i2c_writeb(bus, addr, offset, v, flags); }