Private
Public Access
2
0

led: Add support for initializing onboard LEDs based on board definition

1. Add support for initializing onboard LEDs based on board definition.
Maximum LED count has been set to 12.

2. Introduce mraa_led_init_raw API for initializing LEDs based on
function name. This API can be used by platforms which doesn't have mapping
in board definition.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
This commit is contained in:
Manivannan Sadhasivam
2018-08-30 15:18:39 +05:30
committed by Manivannan Sadhasivam
parent 6c0ec10ba1
commit 6fcd882d58
5 changed files with 83 additions and 7 deletions

View File

@@ -127,7 +127,48 @@ mraa_led_init_internal(const char* led)
}
mraa_led_context
mraa_led_init(const char* led)
mraa_led_init(int index)
{
mraa_led_context dev = NULL;
char directory[MAX_SIZE];
struct stat dir;
if (plat == NULL) {
syslog(LOG_ERR, "led: init: platform not initialised");
return NULL;
}
if (plat->led_dev_count == 0) {
syslog(LOG_ERR, "led: init: no led device defined in platform");
return NULL;
}
if (index < 0) {
syslog(LOG_ERR, "led: init: led index cannot be negative");
return NULL;
}
if (index >= plat->led_dev_count) {
syslog(LOG_ERR, "led: init: requested led above led device count");
return NULL;
}
dev = mraa_led_init_internal((char*) plat->led_dev[index].name);
if (dev == NULL) {
return NULL;
}
snprintf(directory, MAX_SIZE, "%s/%s", SYSFS_CLASS_LED, dev->led_name);
if (stat(directory, &dir) == 0 && S_ISDIR(dir.st_mode)) {
syslog(LOG_NOTICE, "led: init: current user doesn't have access rights for using LED %s", dev->led_name);
}
strncpy(dev->led_path, (const char*) directory, sizeof(directory));
return dev;
}
mraa_led_context
mraa_led_init_raw(const char* led)
{
mraa_led_context dev = NULL;
char directory[MAX_SIZE];