Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/plugins/nokia-gpio.c b/plugins/nokia-gpio.c
- index f3b9460..88f4d32 100644
- --- a/plugins/nokia-gpio.c
- +++ b/plugins/nokia-gpio.c
- @@ -33,12 +33,8 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- -#include <gisi/netlink.h>
- #include <glib.h>
- -#include <ofono/log.h>
- -
- -#include <drivers/isimodem/debug.h>
- #include "nokia-gpio.h"
- #define GPIO_SWITCH "/sys/devices/platform/gpio-switch"
- @@ -73,7 +69,6 @@ enum power_event {
- };
- struct gpio_data {
- - GPhonetNetlink *link;
- gpio_finished_cb_t callback;
- void *data;
- @@ -337,9 +332,6 @@ static void gpio_power_state_machine(enum power_event event)
- case POWER_EVENT_ON:
- self.target = PHONET_LINK_UP;
- - if (self.current == PHONET_LINK_NONE)
- - return;
- -
- switch (self.state) {
- case POWER_STATE_ON_STARTED:
- case POWER_STATE_ON_RESET:
- @@ -596,15 +588,11 @@ static void gpio_power_set_state(enum power_state new_state)
- self.timeout_source = g_timeout_add(timeout,
- gpio_power_timer_cb, NULL);
- }
- -
- - self.callback(new_state, self.data);
- }
- -static void phonet_status_cb(GIsiModem *idx, GPhonetLinkState state,
- - char const *ifname, void *dummy)
- +static void phonet_status_cb(GPhonetLinkState state)
- {
- - DBG("Link %s (%u) is %s",
- - ifname, g_isi_modem_index(idx),
- + DBG("Link is %s",
- state == PN_LINK_REMOVED ? "removed" :
- state == PN_LINK_DOWN ? "down" : "up");
- @@ -705,25 +693,10 @@ static int gpio_probe_links(void)
- }
- -int gpio_probe(GIsiModem *idx, unsigned addr, gpio_finished_cb_t cb, void *data)
- +int gpio_probe()
- {
- int error;
- - if (!cb) {
- - DBG("gpio: No callback given");
- - return -(errno = EFAULT);
- - }
- -
- - if (self.callback) {
- - DBG("gpio: %s", strerror(EBUSY));
- - return -(errno = EBUSY);
- - }
- -
- - if (g_pn_netlink_by_modem(idx)) {
- - DBG("Phonet link %p: %s", idx, strerror(EBUSY));
- - return -(errno = EBUSY);
- - }
- -
- self.target = PHONET_LINK_NONE;
- self.have_gpio_switch = file_exists(GPIO_SWITCH);
- @@ -753,32 +726,11 @@ int gpio_probe(GIsiModem *idx, unsigned addr, gpio_finished_cb_t cb, void *data)
- else
- self.rapu = RAPU_TYPE_2;
- - self.link = g_pn_netlink_start(idx, phonet_status_cb, NULL);
- - if (!self.link) {
- - memset(&self, 0, sizeof self);
- - return -errno;
- - }
- -
- - self.callback = cb;
- - self.data = data;
- -
- - if (addr) {
- - error = g_pn_netlink_set_address(idx, addr);
- - if (error && error != -EEXIST)
- - DBG("g_pn_netlink_set_address: %s", strerror(-error));
- - }
- -
- return 0;
- }
- -int gpio_remove(void *data)
- +int gpio_remove()
- {
- - if (self.data != data)
- - return -EINVAL;
- -
- - if (self.link)
- - g_pn_netlink_stop(self.link);
- -
- if (self.timeout_source) {
- g_source_remove(self.timeout_source);
- self.timeout_source = 0;
- @@ -789,11 +741,8 @@ int gpio_remove(void *data)
- return 0;
- }
- -int gpio_enable(void *data)
- +int gpio_enable()
- {
- - if (self.data != data)
- - return -EINVAL;
- -
- if (self.state == POWER_STATE_ON)
- return 0;
- @@ -802,10 +751,8 @@ int gpio_enable(void *data)
- return -EINPROGRESS;
- }
- -int gpio_disable(void *data)
- +int gpio_disable()
- {
- - if (self.data != data)
- - return -EINVAL;
- if (self.state == POWER_STATE_OFF
- || self.state == POWER_STATE_ON_FAILED)
- @@ -815,3 +762,33 @@ int gpio_disable(void *data)
- return -EINPROGRESS;
- }
- +
- +
- +void help(int argc, char **argv) {
- + printf("Usage: %s [--enable|--disable]\n", argv[0]);
- +}
- +
- +int main(int argc, char **argv) {
- + if(argc < 2) {
- + help(argc, argv);
- + return 1;
- + }
- +
- + if(getuid() != 0) {
- + printf("You are not root!\n");
- + return 1;
- + }
- +
- + if(strcmp(argv[1], "--enable") == 0) {
- + gpio_probe();
- + gpio_enable();
- + } else if(strcmp(argv[1], "--disable") == 0) {
- + gpio_disable();
- + gpio_remove();
- + } else {
- + help(argc, argv);
- + return 1;
- + }
- +
- + return 0;
- +}
- diff --git a/plugins/nokia-gpio.h b/plugins/nokia-gpio.h
- index b653bb8..7c03e15 100644
- --- a/plugins/nokia-gpio.h
- +++ b/plugins/nokia-gpio.h
- @@ -19,6 +19,25 @@
- *
- */
- +/**
- + * DBG:
- + * @fmt: format string
- + * @arg...: list of arguments
- + *
- + * Simple macro around ofono_debug() which also include the function
- + * name it is called in.
- + */
- +extern void ofono_debug(const char *format, ...) __attribute__((format(printf, 1, 2)));
- +
- +#define DBG(fmt, args...) g_debug(fmt, ##args)
- +
- +
- +typedef enum {
- + PN_LINK_REMOVED,
- + PN_LINK_DOWN,
- + PN_LINK_UP
- +} GPhonetLinkState;
- +
- enum power_state {
- POWER_STATE_NONE,
- POWER_STATE_ON_STARTED,
- @@ -32,9 +51,9 @@ enum power_state {
- typedef void (*gpio_finished_cb_t)(enum power_state value, void *opaque);
- -int gpio_probe(GIsiModem *idx, unsigned addr, gpio_finished_cb_t cb, void *data);
- -int gpio_enable(void *opaque);
- -int gpio_disable(void *opaque);
- -int gpio_remove(void *opaque);
- +int gpio_probe();
- +int gpio_enable();
- +int gpio_disable();
- +int gpio_remove();
- char const *gpio_power_state_name(enum power_state value);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement