| 170 | } |
| 171 | |
| 172 | static void sff_8636_show_ext_identifier(const uint8_t *data, struct rte_tel_data *d) |
| 173 | { |
| 174 | static const char *name = "Extended identifier description"; |
| 175 | char val_string[SFF_ITEM_VAL_COMPOSE_SIZE]; |
| 176 | snprintf(val_string, sizeof(val_string), "0x%02x", data[SFF_8636_EXT_ID_OFFSET]); |
| 177 | ssf_add_dict_string(d, "Extended identifier", val_string); |
| 178 | |
| 179 | switch (data[SFF_8636_EXT_ID_OFFSET] & SFF_8636_EXT_ID_PWR_CLASS_MASK) { |
| 180 | case SFF_8636_EXT_ID_PWR_CLASS_1: |
| 181 | ssf_add_dict_string(d, name, "1.5W max. Power consumption"); |
| 182 | break; |
| 183 | case SFF_8636_EXT_ID_PWR_CLASS_2: |
| 184 | ssf_add_dict_string(d, name, "2.0W max. Power consumption"); |
| 185 | break; |
| 186 | case SFF_8636_EXT_ID_PWR_CLASS_3: |
| 187 | ssf_add_dict_string(d, name, "2.5W max. Power consumption"); |
| 188 | break; |
| 189 | case SFF_8636_EXT_ID_PWR_CLASS_4: |
| 190 | ssf_add_dict_string(d, name, "3.5W max. Power consumption"); |
| 191 | break; |
| 192 | } |
| 193 | |
| 194 | if (data[SFF_8636_EXT_ID_OFFSET] & SFF_8636_EXT_ID_CDR_TX_MASK) |
| 195 | ssf_add_dict_string(d, name, "CDR present in TX"); |
| 196 | else |
| 197 | ssf_add_dict_string(d, name, "No CDR in TX"); |
| 198 | |
| 199 | if (data[SFF_8636_EXT_ID_OFFSET] & SFF_8636_EXT_ID_CDR_RX_MASK) |
| 200 | ssf_add_dict_string(d, name, "CDR present in RX"); |
| 201 | else |
| 202 | ssf_add_dict_string(d, name, "No CDR in RX"); |
| 203 | |
| 204 | switch (data[SFF_8636_EXT_ID_OFFSET] & SFF_8636_EXT_ID_EPWR_CLASS_MASK) { |
| 205 | case SFF_8636_EXT_ID_PWR_CLASS_LEGACY: |
| 206 | snprintf(val_string, sizeof(val_string), "%s", ""); |
| 207 | break; |
| 208 | case SFF_8636_EXT_ID_PWR_CLASS_5: |
| 209 | snprintf(val_string, sizeof(val_string), "%s", "4.0W max. Power consumption, "); |
| 210 | break; |
| 211 | case SFF_8636_EXT_ID_PWR_CLASS_6: |
| 212 | snprintf(val_string, sizeof(val_string), "%s", "4.5W max. Power consumption, "); |
| 213 | break; |
| 214 | case SFF_8636_EXT_ID_PWR_CLASS_7: |
| 215 | snprintf(val_string, sizeof(val_string), "%s", "5.0W max. Power consumption, "); |
| 216 | break; |
| 217 | } |
| 218 | |
| 219 | if (data[SFF_8636_PWR_MODE_OFFSET] & SFF_8636_HIGH_PWR_ENABLE) |
| 220 | strlcat(val_string, "High Power Class (> 3.5 W) enabled", sizeof(val_string)); |
| 221 | else |
| 222 | strlcat(val_string, "High Power Class (> 3.5 W) not enabled", sizeof(val_string)); |
| 223 | |
| 224 | ssf_add_dict_string(d, name, val_string); |
| 225 | } |
| 226 | |
| 227 | static void sff_8636_show_connector(const uint8_t *data, struct rte_tel_data *d) |
| 228 | { |
no test coverage detected