static void modem_register_from_proxy(GDBusProxy *proxy, const char *path) { const char *alias, *remote; DBusMessageIter iter; dbus_bool_t paired; struct ofono_modem *modem; if (g_dbus_proxy_get_property(proxy, "Paired", &iter) == FALSE) return; dbus_message_iter_get_basic(&iter, &paired); if (paired == FALSE) return; if (g_dbus_proxy_get_property(proxy, "UUIDs", &iter) == FALSE) return; if (has_hfp_ag_uuid(&iter) == FALSE) return; if (g_dbus_proxy_get_property(proxy, "Alias", &iter) == FALSE) return; dbus_message_iter_get_basic(&iter, &alias); if (g_dbus_proxy_get_property(proxy, "Address", &iter) == FALSE) return; dbus_message_iter_get_basic(&iter, &remote); modem = modem_register(path, remote, alias); g_dbus_proxy_set_property_watch(proxy, alias_changed, modem); g_dbus_proxy_set_removed_watch(proxy, modem_removed, modem); }
static int __devinit u8500_modem_probe(struct platform_device *pdev) { struct modem_dev *mdev; int err; mdev = modem_register(&u8500_modem_desc, &pdev->dev, NULL); if (IS_ERR(mdev)) { err = PTR_ERR(mdev); pr_err("failed to register %s: err %i\n", u8500_modem_desc.name, err); } return 0; }
int main(void) { board_init(BOARD_MODE_RUN); board_console_init(BOARD_DEBUG_BAUD); SysTick_Config(BOARD_SYSTICK_100MS / 10); // Initialize modem modem_init(); if (!modem_enable()) error("modem enable"); if (!modem_register(60000)) error("network register"); if (!modem_gprs_attach(CELL_APN, CELL_USER, CELL_PWD, 30000)) error("GPRS attach"); double lat = 0.0, lon = 0.0; rtc_datetime_t date; modem_location(&lat, &lon, &date, 30000); PRINTF("%04hd-%02hd-%02hd %02hd:%02hd:%02hd\r\n", date.year, date.month, date.day, date.hour, date.minute, date.second); PRINTF("Location: lat=%f, lon=%f\r\n", lat, lon); if (!modem_tcp_connect("api.ubirch.com", 80, 5000)) error("TCP connect"); const char *send_data = "GET / HTTP/1.1\r\n\r\n"; if (!modem_tcp_send((const uint8_t *) send_data, (uint8_t) strlen(send_data), 30000)) error("simulated HTTP GET"); uint8_t buffer[8192]; size_t received = modem_tcp_receive(buffer, 1500, 10000); PRINTF("received %d bytes\r\n", received); dbg_dump("RCV", buffer, received); modem_tcp_close(1000); modem_disable(); while (true) { delay(1000); } }