From 47f3a89441324f4912a7c83bad4f40837bc365b5 Mon Sep 17 00:00:00 2001 From: John Klug Date: Fri, 2 Dec 2016 16:50:38 -0600 Subject: Fix ethernet accessory card bug and add capability directory --- io-module/mts_capab.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 io-module/mts_capab.c (limited to 'io-module/mts_capab.c') diff --git a/io-module/mts_capab.c b/io-module/mts_capab.c new file mode 100644 index 0000000..35a91c6 --- /dev/null +++ b/io-module/mts_capab.c @@ -0,0 +1,69 @@ +/* + * capab.c + * + * Created on: Dec 1, 2016 + * Author: jklug + */ +static ssize_t capab_show_value(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { + ssize_t value; + + if (! strcmp(attr->attr.name, "gps")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_GPS) != 0); + else if (! strcmp(attr->attr.name, "din")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_DIN) != 0); + else if (! strcmp(attr->attr.name, "dout")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_DOUT) != 0); + else if (! strcmp(attr->attr.name, "adc")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_ADC) != 0); + else if (! strcmp(attr->attr.name, "bluetooth")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_BLUETOOTH) != 0); + else if (! strcmp(attr->attr.name, "wifi")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_WIFI) != 0); + else if (! strcmp(attr->attr.name, "wifi_bt")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_WIFI_BT) != 0); + else if (! strcmp(attr->attr.name, "gnss")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_GNSS) != 0); + else if (! strcmp(attr->attr.name, "lora")) + value = snprintf(buf, 32, "%lu\n", DEVICE_CAPA(id_eeprom.capa, CAPA_LORA) != 0); + else { + log_error("attribute [%s] not found", attr->attr.name); + value = -1; + } + + return value; +} + +static char *attribute_names[] = { + "gps", + "din", + "dout", + "adc", + "bluetooth", + "wifi", + "wifi_bt", + "gnss", + "lora", +}; + +static bool capab_add_attributes(struct attribute** attrs) { + struct kobj_attribute* kobj_attr; + int i; + int count = sizeof(attribute_names)/sizeof(attribute_names[0]); + + // We must keep the number of attributes in sync + BUG_ON(CAPA_COUNT != count); + log_info("capab_add_attributes, add %d attributes",count); + for(i=0;ishow = capab_show_value; + attrs[i] = &kobj_attr->attr; + log_error("created attribute [%s]", attribute_names[i]); + } + + return true; +} -- cgit v1.2.3