[RFC] HFP support into oFono and BlueZ
by Gustavo F. Padovan
Hi,
These patches implement the new API for the Audio Gateway in BlueZ. It
follows the last version of the HandsfreeGateway and HandsfreeAgent
Intefaces API.
The first two patches is for BlueZ and the other for oFono. You can
test it with using enable-modem and test-voicecall scripts into the
test dir of oFono.
Feel free to test it and send me your comments. We have some bugs yet.
The audio part is not working yet. We are going to work on pulseaudio
this week to get this done soon.
Regards,
--
Gustavo F. Padovan
ProFUSION embedded systems - http://profusion.mobi
8 years, 6 months
CDMA SMS Handling
by Rajesh.Nagaiah@elektrobit.com
Hi,
There was a discussion about the CDMA SMS handling and CDMA PDUs in the
IRC channel couple of days before. I would like to highlight the
differences between CDMA and GSM PDU and how we should proceed with this
from my understanding. Let me know your opinion.
Even though oFono supports +CMT and +CMTI, if we feed the incoming CDMA
PDUs to the SMS core it wont get decoded correctly, as there is
substantial differences between the GSM and CDMA SMS PDUs as described
in 3GPP2 specification C.S0015-B Short Message Service (SMS) for
Wideband Spread Spectrum Systems
For eg, the incoming PDU example that was mentioned in the IRC
discussion
+CMT: , 40,
00000210020207028CE95DCC65800601FC08150003168D30010610241830608003061010
04044847
40 - Length of the PDU in bytes
00 - Message Type ( 00 - SMS Point-to-Point)
00 - TeleService Identifier Tag (SMS Parameter Indentifier)
02 - TeleService Identifier Length (SMS Parameter Length)
10 - TeleService Identifier Value - First 8 bits
02 - TeleService Identifier Value - Second 8 bits
TeleService Identifier - 0x1002 - CDMA Messaging Teleservice
(CMT-95)
02 - Originating Address Tag
07 - Originating Address Length
02 - Originating Address 1st 8 Bits
8C - Originating Address 2nd 8 Bits
E9 - Originating Address 3rd 8 Bits
5D - Originating Address 4th 8 Bits
CC - Originating Address 5th 8 Bits
65 - Originating Address 6th 8 Bits
80 - Originating Address 7th 8 Bits
Digit Mode - 1 Bit
Number Mode - 1 Bit
Number Type - 0 or 3 bits
Number Plan - 0 or 4 bits
Number Fields - 8 Bits
Number Field occurrence of CHARi
CHARi - 4 or 8 bits ( 4 - in case of DTMF encoding, 8 - incase
of ASCII encoding)
Reserved - 0-7 bits
Lets take the 1st and 2nd 8 bits
02 - 0000 0010 ( Digit Mode bit - 0, Number Mode bit - 0)
8C - 1000 1100
As Digit mode bit is set to 0, Number Plan and Number Type is void
(0 bits) in this case.
So the remaining 6 bits of 1st 8bits and the first 2 bits of 2nd
8bit is Number fields
Number fields - 00 0010 10 - 0000 1010 - 0x0A (10 digits)
As Digit mode bit is set to 0, each address digit here is
represented as 4bit DTMF digit
0x8C 0xE9 0x5D 0xCC 0x65 0X80
1000 1100 1110 1001 0101 1101 1100 1100 0110 0101 1000 0000
10 0011 0011 1010 0101 0111 0111 0011 0001 1001 0110 0000 00
3 3 0 5 7 7 3 1 9 6 Last 6 bits
are reserved bits
Originating Address - 3305773196
06 - Bearer Reply Option Tag
01 - Bearer Reply Option Length
FC - First 6 bits Reply Sequence number and last 2 bits reserved set to
0
1111 1100 - 111111 REPLY_SEQ
00 Reserved
08 - Bearer Data Tag
15 - Bearer Data Length
00 - Message Indentifier Tag ( Bearer Data Sub parameter )
03 - Message Indentifier Length
16 - Message Type 4 bits Message Id 4 Bits
8D - Message Id 8 Bits
30 - Message Id 4 Bits, UDH Header indicator 1 Bit, Reserved 3 Bits
How Message Identifier value 16 8D 30 was formed ?
Message type ( 4 bits ) - 1( 0001 - Deliver)
Message Identifier ( 16 bits ) - 26835( 0x68D3)
Header Indicator (1 bit) - 0 (UDH not present in User Data
Subparameter)
Reserved ( 3bits) - 0 (000)
01 - User Data Tag ( Bearer Data Sub parameter )
06 - User Data Length
10 - Message Encoding 5 bits ( 0001 0000 ( 00010 = 2 -> 7-bit ASCII )) &
Number Fields 3 bits ( 000)
24 - Number Fields 5 Bits + User char field 1's 3 bits ( 0010 0100 )
18 - User char field 1's remaining 5 bits + User char field 2's 3 bits
(0001 1000)
30 - User char field 2's remaining 5 bits + User char field 3's 3 bits
(0011 0000)
60 - User char field 3's remaining 5 bits + User char field 4's 3 bits
(0110 0000)
80 - User char field 4's remaining 5 bits + Reserved 3 Bits (1000 0000)
Number Fields: 000 00100 - 04 (4 Character fields)
User Char [1] - 100 00011 - 0x83
User Char [2] - 000 00110 - 0x06
User Char [3] - 000 01100 - 0x0C
User Char [4] - 000 10000 - 0x10
Hex 0x83 0x06 0x0C 0x10
Octets 1000 0011 0000 0110 0000 1100 0001 0000
Septets 1000 001 10000 01 100000 1 1000001
Character A(0x41) A(0x41) A(0x41) A(0x41)
Message content: AAAA
Message Encoding - 2 (00010 - 5 bits)
Number Fields - 4 (0000 0100 - 8 bits)
User characters - 0x83 0x06 0x0C 0x10 ( 8 bits each)
00010 0000 0100 1000 0011 0000 0110 0000 1100 0001 0000
0001 0000 - 0x10
0010 0100 - 0x24
0001 1000 - 0x18
0011 0000 - 0x30
0110 0000 - 0x60
1000 0000 - 0x80 (Last 3 bits set to 0's(reserved bit) to complete
the octets)
03 - Message Center Time Stamp Tag ( Bearer Data Sub parameter )
06 - Message Center Time Stamp Length
all date and time fields contain two 4-bit BCD numbers giving the
decimal value of the field.
10 - Year (2010)
10 - Month (10 - October)
04 - Day
04 - Hour
48 - Minutes
47 - Seconds
Time Stamp 04:48:47 04/10/2010
Decoded Information:
Message Type: Deliver (Incoming Message)
Teleservice: CMT-95
Message Identifier: 26835
Originating Address: 3305773196
Message content: AAAA
Message Center Time Stamp: 04:48:47 04/10/2010
As from the above decoding example we can see there is substantial
differences between the GSM and CDMA SMS specifications and so the SMS
atom needs many additions and needs to be heavily modified to support
also CDMA SMS handling. Currently the oFono sms file unit handles the
common and the GSM technology aspects of the SMS stack along with the
smsutils. The SMS atom has the GSM specific members, segmentation and
queuing logic. The smsutils mainly takes care of encoding/decoding of
the PDUs, which is GSM specific. As the segmentation and queuing logic
and the interface is common for both GSM and CDMA, we could reuse this
common code and add the CDMA handling into it and create a new
cdmasmsutils unit to support the CDMA SMS specifics, much like the
smsutils does already for GSM.
BR,
Rajesh
8 years, 8 months
[PATCH] add anwser/send flash/send tones support for cdma voice call
by Caiwen Zhang
diff --git a/include/cdma-voicecall.h b/include/cdma-voicecall.h
index 9e741da..520934b 100644
--- a/include/cdma-voicecall.h
+++ b/include/cdma-voicecall.h
@@ -55,8 +55,20 @@ struct ofono_cdma_voicecall_driver {
/* Hangs up active, dialing, alerting or incoming calls */
void (*hangup)(struct ofono_cdma_voicecall *vc,
ofono_cdma_voicecall_cb_t cb, void *data);
+
+ void (*answer)(struct ofono_cdma_voicecall *vc,
+ ofono_cdma_voicecall_cb_t cb, void *data);
+
+ void (*send_flash)(struct ofono_cdma_voicecall *vc, const char *string,
+ ofono_cdma_voicecall_cb_t cb, void *data);
+
+ void (*send_tones)(struct ofono_cdma_voicecall *vc, const char *tones,
+ ofono_cdma_voicecall_cb_t cb, void *data);
};
+void ofono_cdma_voicecall_notify(struct ofono_cdma_voicecall *vc,
+ int direction, enum cdma_call_status status, const char *number);
+
void ofono_cdma_voicecall_disconnected(struct ofono_cdma_voicecall *vc,
enum ofono_disconnect_reason reason,
const struct ofono_error *error);
diff --git a/src/cdma-voicecall.c b/src/cdma-voicecall.c
index 183433d..20ab831 100644
--- a/src/cdma-voicecall.c
+++ b/src/cdma-voicecall.c
@@ -40,6 +40,7 @@ static GSList *g_drivers;
struct ofono_cdma_voicecall {
struct ofono_cdma_phone_number phone_number;
+ struct ofono_cdma_phone_number waiting_number;
int direction;
enum cdma_call_status status;
time_t start_time;
@@ -108,14 +109,33 @@ static void append_voicecall_properties(struct ofono_cdma_voicecall *vc,
{
const char *status;
const char *lineid;
+ const char *waiting_call = NULL;
+ ofono_bool_t call_waiting;
status = cdma_call_status_to_string(vc->status);
- lineid = cdma_phone_number_to_string(&vc->phone_number);
ofono_dbus_dict_append(dict, "State", DBUS_TYPE_STRING, &status);
- ofono_dbus_dict_append(dict, "LineIdentification",
- DBUS_TYPE_STRING, &lineid);
+ if (vc->status != CDMA_CALL_STATUS_DISCONNECTED) {
+ if (vc->phone_number.number[0] != '\0') {
+ lineid = cdma_phone_number_to_string(&vc->phone_number);
+ ofono_dbus_dict_append(dict, "LineIdentification",
+ DBUS_TYPE_STRING, &lineid);
+ }
+
+ if (vc->waiting_number.number[0] != '\0') {
+ waiting_call = cdma_phone_number_to_string(
+ &vc->waiting_number);
+
+ ofono_dbus_dict_append(dict, "CallWaitingNumber",
+ DBUS_TYPE_STRING, &waiting_call);
+ }
+ }
+
+ call_waiting = (waiting_call != NULL);
+
+ ofono_dbus_dict_append(dict, "CallWaiting",
+ DBUS_TYPE_BOOLEAN, &call_waiting);
if (vc->status == CDMA_CALL_STATUS_ACTIVE) {
const char *timestr = time_to_str(&vc->start_time);
@@ -172,6 +192,7 @@ static void voicecall_set_call_status(struct ofono_cdma_voicecall *vc,
const char *status_str;
enum cdma_call_status old_status;
+ DBG("status: %s", cdma_call_status_to_string(status));
if (vc->status == status)
return;
@@ -198,6 +219,14 @@ static void voicecall_set_call_status(struct ofono_cdma_voicecall *vc,
"StartTime", DBUS_TYPE_STRING,
×tr);
}
+
+ if (status == CDMA_CALL_STATUS_DISCONNECTED) {
+ memset(&vc->phone_number, 0,
+ sizeof(struct ofono_cdma_phone_number));
+
+ memset(&vc->waiting_number, 0,
+ sizeof(struct ofono_cdma_phone_number));
+ }
}
static void voicecall_set_call_lineid(struct ofono_cdma_voicecall *vc)
@@ -215,6 +244,32 @@ static void voicecall_set_call_lineid(struct ofono_cdma_voicecall *vc)
DBUS_TYPE_STRING, &lineid_str);
}
+static void voicecall_set_call_waiting_number(struct ofono_cdma_voicecall *vc,
+ const struct ofono_cdma_phone_number *ph)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path = __ofono_atom_get_path(vc->atom);
+ const char *waiting_number;
+ ofono_bool_t call_waiting = TRUE;
+
+ if (ph->number[0] == '\0')
+ return;
+
+ memcpy(&vc->waiting_number, ph, sizeof(struct ofono_cdma_phone_number));
+
+ waiting_number = cdma_phone_number_to_string(ph);
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_CDMA_VOICECALL_MANAGER_INTERFACE,
+ "CallWaitingNumber", DBUS_TYPE_STRING,
+ &waiting_number);
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_CDMA_VOICECALL_MANAGER_INTERFACE,
+ "CallWaiting", DBUS_TYPE_BOOLEAN,
+ &call_waiting);
+}
+
static void manager_dial_callback(const struct ofono_error *error, void *data)
{
struct ofono_cdma_voicecall *vc = data;
@@ -229,7 +284,9 @@ static void manager_dial_callback(const struct ofono_error *error, void *data)
voicecall_set_call_lineid(vc);
vc->direction = CALL_DIRECTION_MOBILE_ORIGINATED;
- voicecall_set_call_status(vc, CDMA_CALL_STATUS_DIALING);
+
+ if (vc->status != CDMA_CALL_STATUS_ACTIVE)
+ voicecall_set_call_status(vc, CDMA_CALL_STATUS_DIALING);
reply = dbus_message_new_method_return(vc->pending);
__ofono_dbus_pending_reply(&vc->pending, reply);
@@ -286,6 +343,105 @@ static DBusMessage *voicecall_manager_hangup(DBusConnection *conn,
return NULL;
}
+static DBusMessage *voicecall_manager_answer(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct ofono_cdma_voicecall *vc = data;
+
+ if (vc->pending)
+ return __ofono_error_busy(msg);
+
+ if (vc->driver->answer == NULL)
+ return __ofono_error_not_implemented(msg);
+
+ if (vc->status != CDMA_CALL_STATUS_INCOMING)
+ return __ofono_error_failed(msg);
+
+ vc->pending = dbus_message_ref(msg);
+
+ vc->driver->answer(vc, generic_callback, vc);
+
+ return NULL;
+}
+
+static DBusMessage *voicecall_manager_flash(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct ofono_cdma_voicecall *vc = data;
+ const char *string;
+
+ if (vc->pending)
+ return __ofono_error_busy(msg);
+
+ if (vc->driver->send_flash == NULL)
+ return __ofono_error_not_implemented(msg);
+
+ if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &string,
+ DBUS_TYPE_INVALID) == FALSE)
+ return __ofono_error_invalid_args(msg);
+
+ if (vc->status == CDMA_CALL_STATUS_DISCONNECTED)
+ return __ofono_error_failed(msg);
+
+ vc->pending = dbus_message_ref(msg);
+
+ vc->driver->send_flash(vc, string, generic_callback, vc);
+
+ return NULL;
+}
+
+static ofono_bool_t is_valid_tones(const char *tones)
+{
+ int len;
+ int i;
+
+ if (tones == NULL)
+ return FALSE;
+
+ len = strlen(tones);
+ if (len == 0)
+ return FALSE;
+
+ for (i = 0; i < len; i++) {
+ if (g_ascii_isdigit(tones[i]) || tones[i] == '*' ||
+ tones[i] == '#')
+ continue;
+ else
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static DBusMessage *voicecall_manager_tone(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct ofono_cdma_voicecall *vc = data;
+ const char *tones;
+
+ if (vc->pending)
+ return __ofono_error_busy(msg);
+
+ if (vc->driver->send_tones == NULL)
+ return __ofono_error_not_implemented(msg);
+
+ if (vc->status != CDMA_CALL_STATUS_ACTIVE)
+ return __ofono_error_failed(msg);
+
+ if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &tones,
+ DBUS_TYPE_INVALID) == FALSE)
+ return __ofono_error_invalid_args(msg);
+
+ if (is_valid_tones(tones) == FALSE)
+ return __ofono_error_invalid_args(msg);
+
+ vc->pending = dbus_message_ref(msg);
+
+ vc->driver->send_tones(vc, tones, generic_callback, vc);
+
+ return NULL;
+}
+
static GDBusMethodTable manager_methods[] = {
{ "GetProperties", "", "a{sv}",
voicecall_manager_get_properties },
@@ -293,6 +449,12 @@ static GDBusMethodTable manager_methods[] = {
G_DBUS_METHOD_FLAG_ASYNC },
{ "Hangup", "", "", voicecall_manager_hangup,
G_DBUS_METHOD_FLAG_ASYNC },
+ { "Answer", "", "", voicecall_manager_answer,
+ G_DBUS_METHOD_FLAG_ASYNC },
+ { "SendFlash", "s", "", voicecall_manager_flash,
+ G_DBUS_METHOD_FLAG_ASYNC },
+ { "SendTones", "s", "", voicecall_manager_tone,
+ G_DBUS_METHOD_FLAG_ASYNC },
{ }
};
@@ -302,6 +464,31 @@ static GDBusSignalTable manager_signals[] = {
{ }
};
+void ofono_cdma_voicecall_notify(struct ofono_cdma_voicecall *vc,
+ int direction, enum cdma_call_status status,
+ const char *number)
+{
+ struct ofono_cdma_phone_number ph;
+
+ DBG("direction: %d; status: %d; num: %s", direction, status, number);
+
+ string_to_cdma_phone_number(number, &ph);
+
+ if (status == CDMA_CALL_STATUS_INCOMING
+ && vc->status == CDMA_CALL_STATUS_ACTIVE) {
+ voicecall_set_call_waiting_number(vc, &ph);
+ } else {
+ memcpy(&vc->phone_number, &ph,
+ sizeof(struct ofono_cdma_phone_number));
+
+ voicecall_set_call_lineid(vc);
+ }
+
+ vc->direction = direction;
+
+ voicecall_set_call_status(vc, status);
+}
+
void ofono_cdma_voicecall_disconnected(struct ofono_cdma_voicecall *vc,
enum ofono_disconnect_reason reason,
const struct ofono_error *error)
--
1.7.5
9 years, 6 months
[PATCH 0/4] ZTE/SpeedUp specificities
by Philippe Nunes
On ZTE/Speedup modem, AT+CPIN? keeps returning CME ERROR 14 for a moment after successful AT+CPIN=".."
As there is no card status notification, a pooling with CPIN queries is used to detect the state change.
On SpeedUp modem (vendor id 0x1c9e), use the proprietary command AT+CPNNUM? to get the remaining SIM PIN attempts.
Philippe Nunes (4):
atmodem: Add vendor entry for SpeedUp modems
speedup: Create SIM atom with SpeedUp vendor to handle proprietary
commands
atmodem: Add a polling based on CPIN query to detect SIM state change
atmodem: Add support for the PIN counter command AT+CPNNUM
drivers/atmodem/sim.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++
drivers/atmodem/vendor.h | 1 +
plugins/speedup.c | 2 +-
3 files changed, 153 insertions(+), 1 deletions(-)
9 years, 6 months
[PATCH] zte: delay the sending of &C0 after SIM is ready.
by Bertrand Aygon
When sending &C0 after CFUN, sometimes we got error:
ofonod[8818]: plugins/zte.c:zte_enable() 0x8576190
ofonod[8818]: src/modem.c:get_modem_property() modem 0x8576190 property Modem
ofonod[8818]: plugins/zte.c:open_device() Modem /dev/ttyUSB5
ofonod[8818]: src/modem.c:get_modem_property() modem 0x8576190 property Aux
ofonod[8818]: plugins/zte.c:open_device() Aux /dev/ttyUSB2
ofonod[8818]: Modem: > ATE0 +CMEE=1\r
ofonod[8818]: Aux: > ATE0 +CMEE=1\r
ofonod[8818]: Aux: < ATE0 +CMEE=1\r\r\nOK\r\n
ofonod[8818]: Aux: > AT+CFUN=1;+CFUN=4\r
ofonod[8818]: Modem: < \r\nOK\r\n
ofonod[8818]: Aux: < \r\nOK\r\n
ofonod[8818]: plugins/zte.c:cfun_enable()
ofonod[8818]: Modem: > AT&C0\r
ofonod[8818]: Aux: > AT&C0\r
ofonod[8818]: Aux: < \r\nERROR\r\n
ofonod[8818]: Aux: > AT+CPIN?\r
ofonod[8818]: Modem: < \r\nERROR\r\n
ofonod[8818]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[8818]: Aux: > AT+CPIN?\r
ofonod[8818]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[8818]: Aux: > AT+CPIN?\r
ofonod[8818]: Aux: < \r\n+CME ERROR: 14\r\n
If waiting for SIM, this is OK:
ofonod[9428]: plugins/zte.c:zte_enable() 0x9fdbb48
ofonod[9428]: src/modem.c:get_modem_property() modem 0x9fdbb48 property Modem
ofonod[9428]: plugins/zte.c:open_device() Modem /dev/ttyUSB5
ofonod[9428]: src/modem.c:get_modem_property() modem 0x9fdbb48 property Aux
ofonod[9428]: plugins/zte.c:open_device() Aux /dev/ttyUSB2
ofonod[9428]: Modem: > ATE0 +CMEE=1\r
ofonod[9428]: Aux: > ATE0 +CMEE=1\r
ofonod[9428]: Aux: < ATE0 +CMEE=1\r\r\nOK\r\n
ofonod[9428]: Aux: > AT+CFUN=1;+CFUN=4\r
ofonod[9428]: Modem: < \r\nOK\r\n
ofonod[9428]: src/modem.c:get_modem_property() modem 0x9fdbb48 property Path
ofonod[9428]: plugins/udev.c:add_modem() /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/ttyUSB0/tty/ttyUSB0 (zte)
ofonod[9428]: plugins/udev.c:add_zte() modem 0x9fdbb48
ofonod[9428]: src/modem.c:get_modem_property() modem 0x9fdbb48 property ModemRegistered
ofonod[9428]: src/modem.c:get_modem_property() modem 0x9fdbb48 property AuxRegistered
ofonod[9428]: Aux: < \r\nOK\r\n
ofonod[9428]: plugins/zte.c:cfun_enable()
ofonod[9428]: Aux: > AT+CPIN?\r
ofonod[9428]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[9428]: Aux: > AT+CPIN?\r
ofonod[9428]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[9428]: Aux: > AT+CPIN?\r
ofonod[9428]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[9428]: Modem: < \r\n+ZPSTM: 3,446976652D696E204E6F77;3,456E676C697368204D656E75;4,48696E6469204D656E75;132,4D2D57616C6C657420286D4368656B29;\r\n
ofonod[9428]: Aux: < \r\n+ZPSTM: 3,446976652D696E204E6F77;3,456E676C697368204D656E75;4,48696E6469204D656E75;132,4D2D57616C6C657420286D4368656B29;\r\n
ofonod[9428]: Aux: > AT+CPIN?\r
ofonod[9428]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[9428]: Aux: > AT+CPIN?\r
ofonod[9428]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[9428]: Aux: > AT+CPIN?\r
ofonod[9428]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n
ofonod[9428]: examples/emulator.c:powered_watch() Adding modem 0x9fdbb48 to the list
ofonod[9428]: examples/emulator.c:create_tcp() Created server_watch: 52
ofonod[9428]: examples/emulator.c:create_tcp() Created server_watch: 53
ofonod[9428]: src/modem.c:modem_change_state() old state: 0, new state: 1
ofonod[9428]: plugins/zte.c:zte_pre_sim() 0x9fdbb48
ofonod[9428]: Aux: > AT+GCAP\r
ofonod[9428]: Modem: > AT&C0\r
ofonod[9428]: src/sim.c:ofono_sim_add_state_watch() 0x9fdb178
ofonod[9428]: src/sim.c:ofono_sim_add_state_watch() 0x9fdb178
ofonod[9428]: src/sim.c:ofono_sim_add_state_watch() 0x9fdb178
ofonod[9428]: Aux: < \r\n+GCAP: +CGSM,+FCLASS,+DS\r\n\r\nOK\r\n
ofonod[9428]: Aux: > AT&C0\r
ofonod[9428]: Aux: < \r\nOK\r\n
ofonod[9428]: Aux: > AT+CRSM=192,12258,0,0,255\r
ofonod[9428]: Modem: < \r\nOK\r\n
Bertrand Aygon (1):
zte: delay the sending of &C0 after SIM is ready.
plugins/zte.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
--
1.7.4.1
---------------------------------------------------------------------
Intel Corporation SAS (French simplified joint stock company)
Registered headquarters: "Les Montalets"- 2, rue de Paris,
92196 Meudon Cedex, France
Registration Number: 302 456 199 R.C.S. NANTERRE
Capital: 4,572,000 Euros
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
9 years, 7 months
[PATCH] udev: add support for Vodaphone K3570-Z modem
by Bertrand Aygon
---
plugins/ofono.rules | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/plugins/ofono.rules b/plugins/ofono.rules
index b7eb73c..bcfd56d 100644
--- a/plugins/ofono.rules
+++ b/plugins/ofono.rules
@@ -35,6 +35,9 @@ ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0121", ENV{ID_USB_INTERFACE_NUM}=="0
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0124", ENV{ID_USB_INTERFACE_NUM}=="04", ENV{OFONO_ZTE_TYPE}="modem"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0124", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_ZTE_TYPE}="aux"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", ENV{ID_USB_INTERFACE_NUM}=="02", ENV{OFONO_ZTE_TYPE}="modem"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_ZTE_TYPE}="aux"
+
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", ENV{ID_USB_INTERFACE_NUM}=="03", ENV{OFONO_ZTE_TYPE}="modem"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_ZTE_TYPE}="aux"
--
1.7.4.1
---------------------------------------------------------------------
Intel Corporation SAS (French simplified joint stock company)
Registered headquarters: "Les Montalets"- 2, rue de Paris,
92196 Meudon Cedex, France
Registration Number: 302 456 199 R.C.S. NANTERRE
Capital: 4,572,000 Euros
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
9 years, 7 months
[PATCH] udev: add support for Olive V-ME101 HSIA modem
by Bertrand Aygon
---
plugins/ofono.rules | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/plugins/ofono.rules b/plugins/ofono.rules
index bcfd56d..3434bef 100644
--- a/plugins/ofono.rules
+++ b/plugins/ofono.rules
@@ -385,6 +385,10 @@ ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9e00", ENV{ID_USB_INTERFACE_NUM}=="0
ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1008", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_SPEEDUP_TYPE}="modem"
ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1008", ENV{ID_USB_INTERFACE_NUM}=="03", ENV{OFONO_SPEEDUP_TYPE}="aux"
+# Olive
+ATTRS{idVendor}=="201e", ATTRS{idProduct}=="2009", ENV{ID_USB_INTERFACE_NUM}=="00", ENV{OFONO_HUAWEI_TYPE}="Modem"
+ATTRS{idVendor}=="201e", ATTRS{idProduct}=="2009", ENV{ID_USB_INTERFACE_NUM}=="02", ENV{OFONO_HUAWEI_TYPE}="Pcui"
+
LABEL="ofono_tty_end"
# ISI/Phonet drivers
@@ -440,6 +444,9 @@ ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1008", ENV{OFONO_DRIVER}="speedup"
ATTRS{idVendor}=="2020", ATTRS{serial}=="1234567890ABCDEF", ENV{ID_SERIAL_SHORT}=""
+# Olive
+ATTRS{idVendor}=="201e", ENV{OFONO_DRIVER}="huaweicdma"
+
# Option Globetrotter
ATTRS{idVendor}=="0af0", ATTRS{idProduct}=="6911", ENV{OFONO_DRIVER}="hso"
ATTRS{idVendor}=="0af0", ATTRS{idProduct}=="6971", ENV{OFONO_DRIVER}="hso"
--
1.7.4.1
---------------------------------------------------------------------
Intel Corporation SAS (French simplified joint stock company)
Registered headquarters: "Les Montalets"- 2, rue de Paris,
92196 Meudon Cedex, France
Registration Number: 302 456 199 R.C.S. NANTERRE
Capital: 4,572,000 Euros
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
9 years, 7 months
Huawei E398 and E367
by Aygon, Bertrand
Hi Marcel,
I saw that you add an oFono.rules to support E398 Huawei modem. And for this modem, you are using interface 0 for Modem and 1 for Pcui. This mode has a VID/PID after switch 12d1:1506.
But I have a Huawei E367, which also switch to 12d1:1506, but which is not using the same tty.
The E3667 has five tty, but only ttyUSB0 and ttyUSB4 can send/recv AT command.
Is your dongle also have a ttUSB4 that could be used?
How can we handle such cases?
Thanks,
Bertrand.
--
Bertrand Aygon Engineering Manager
Bertrand.Aygon(a)Intel.com<mailto:Bertrand.Aygon@intel.com> Open Source Technology Center, Intel Corporation
---------------------------------------------------------------------
Intel Corporation SAS (French simplified joint stock company)
Registered headquarters: "Les Montalets"- 2, rue de Paris,
92196 Meudon Cedex, France
Registration Number: 302 456 199 R.C.S. NANTERRE
Capital: 4,572,000 Euros
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
9 years, 7 months
[PATCH] udev: assign "huaweicdma" OFONO_DRIVER for E156 dongle
by Guillaume Zajac
---
plugins/ofono.rules | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 216 insertions(+), 1 deletions(-)
diff --git a/plugins/ofono.rules b/plugins/ofono.rules
index f8e485b..94eb061 100644
--- a/plugins/ofono.rules
+++ b/plugins/ofono.rules
@@ -412,7 +412,222 @@ ATTRS{idVendor}=="1199", ENV{OFONO_DRIVER}="sierra"
ATTRS{idVendor}=="1199", ATTRS{serial}=="1234567890ABCDEF", ENV{ID_SERIAL_SHORT}=""
# HUAWEI Technology
-ATTRS{idVendor}=="12d1", ENV{OFONO_DRIVER}="huawei"
+
+# Generic 0x1001
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", ENV{OFONO_DRIVER}="huawei"
+
+# Generic 0x1003
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1003", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1004", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1401", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1402", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1405", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1406", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1408", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1409", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140a", ENV{OFONO_DRIVER}="huawei"
+
+# E156
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140b", ENV{OFONO_DRIVER}="huaweicdma"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140d", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140e", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140f", ENV{OFONO_DRIVER}="huawei"
+
+# E510
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1411", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1412", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1413", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1414", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1415", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1416", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1417", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1418", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1419", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141a", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141b", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141c", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141d", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141e", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141f", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1420", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1421", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1422", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1427", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1428", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1429", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="142a", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1448", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1433", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1434", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1436", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1438", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1439", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="143a", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="143b", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="143e", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1450", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1451", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1452", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1453", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1454", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1455", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1456", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1457", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1458", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1459", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="145a", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="145b", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="145c", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="145d", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="145e", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="145f", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1460", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1461", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1462", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1463", ENV{OFONO_DRIVER}="huawei"
+
+# K4505
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1464", ENV{OFONO_DRIVER}="huawei"
+
+# K3765
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1465", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1466", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1467", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1468", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1469", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="146a", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="146b", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="146c", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="146d", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="146e", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="146f", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1470", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1471", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1472", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1473", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1474", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1475", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1476", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1477", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1478", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1479", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="147a", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="147b", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="147c", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="147d", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="147e", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="147f", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1480", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1481", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1482", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1483", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1484", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1485", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1486", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506", ENV{OFONO_DRIVER}="huawei"
+
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1c05", ENV{OFONO_DRIVER}="huawei"
# Qualcomm Incorporated
ATTRS{idVendor}=="05c6", ENV{OFONO_DRIVER}="gobi"
--
1.7.1
9 years, 7 months
[PATCH 0/2] speedup: improvement
by Bertrand Aygon
Remove online/offline mechanism, since speedup modem have lot of difficulties to exit offline mode.
Delay sending of &C0 to disable data carrier detect.
Bertrand Aygon (2):
speedup: remove online/offline mechanism.
speedup: delay &C0.
plugins/speedup.c | 63 +++++++++++-----------------------------------------
1 files changed, 14 insertions(+), 49 deletions(-)
--
1.7.4.1
---------------------------------------------------------------------
Intel Corporation SAS (French simplified joint stock company)
Registered headquarters: "Les Montalets"- 2, rue de Paris,
92196 Meudon Cedex, France
Registration Number: 302 456 199 R.C.S. NANTERRE
Capital: 4,572,000 Euros
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
9 years, 7 months