Code review comment for lp:~awe/phablet-extras/ofono-gprs-support

Revision history for this message
Ricardo Salveti (rsalveti) wrote :

91 +static char printBuf[PRINTBUF_SIZE];

574 +static char printBuf[PRINTBUF_SIZE];

910 +static char printBuf[PRINTBUF_SIZE];

2390 +static char printBuf[PRINTBUF_SIZE];

Do we really need a global string? Would avoid calling clear.

1467 + * $AOSP/hardware/ril/libril/ril.cpp
1468 + */
1469 +#define startRequest sprintf(printBuf, "(")
1470 +#define closeRequest sprintf(printBuf, "%s)", printBuf)
1471 +#define printRequest(token, req) \
1472 + ofono_debug("[%04d]> %s %s", token, ril_request_id_to_string(req), printBuf)
1473 +
1474 +#define startResponse sprintf(printBuf, "%s {", printBuf)
1475 +#define closeResponse sprintf(printBuf, "%s}", printBuf)
1476 +#define printResponse ofono_debug("%s", printBuf)
1477 +
1478 +#define clearPrintBuf printBuf[0] = 0
1479 +#define removeLastChar printBuf[strlen(printBuf)-1] = 0
1480 +#define appendPrintBuf(x...) sprintf(printBuf, x)

91 +static char printBuf[PRINTBUF_SIZE];

Coding style here might be an issue when pushing this code upstream. I'd guess it'd be better to use print_buf instead.

114 + if (message->buf_len < 36) {
115 + DBG("Parcel is less then minimum DataCallResponseV6 size!");

Missing "decode_ril_error(&error, "FAIL");".

126 + /* TODO: make conditional */
127 + appendPrintBuf("[%04d]< %s",
128 + message->serial_no,
129 + ril_request_id_to_string(message->req));
130 + startResponse;
131 + /* TODO: make conditional */

Mind moving this code a bit bellow so it can be near the rest of the append/close/print logic? Otherwise it's hard to track which message it's actually covering (in case of another message setup later).

135 + /* RIL version */
136 + version = parcel_r_int32(&rilp);
137 +
138 + /* Size of call list */
139 + /* TODO: What if there's more than 1 call in the list?? */
140 + num = parcel_r_int32(&rilp);

Isn't the reply just a RIL_Data_Call_Response_v6 struct? If so, mind adding a comment saying that the version and num arguments were not described correctly by the Android ril.h file?

175 + if (status != 0) {
176 + DBG("Reply failure; status %d", status);
177 + gcd->state = STATE_IDLE;
178 + goto error;
179 + }

203 + if (ip_addrs[0] == NULL) {
204 + DBG("Invalid IP address field returned: %s", raw_ip_addrs);
205 + goto error;
206 + }

217 + if (split_ip_addr[0] == NULL) {
218 + ofono_error("Invalid IP address; can't strip prefix: %s",
219 + ip_addrs[0]);
220 + goto error;
221 + }

230 + if (gateways[0] == NULL) {
231 + DBG("Invalid gateways field returned: %s", raw_gws);
232 + goto error;
233 + }

Don't you also need to update error.error here?

Also, in case of error, we're not releasing any of the strings allocated with parcel_r_string (your code just free them in case it all works).

266 + guchar profile[5] = { 0x00 };

Not used.

329 + DBG("Invalid protocol");

Mind doing a better error message here? Otherwise it will be hard to get from the ofono log.

334 + appendPrintBuf("%s %s,%s,%s,%s,%s,%s,%s",
335 + printBuf,
336 + tech,
337 + DATA_PROFILE_DEFAULT,
338 + ctx->apn,
339 + ctx->username,
340 + ctx->password,
341 + CHAP_PAP_OK,
342 + protocol);
343 +
344 + ret = g_ril_send(gcd->ril,
345 + request,
346 + rilp.data,
347 + rilp.size,
348 + ril_setup_data_call_cb, cbd, g_free);
349 +
350 + /* TODO: make conditional */
351 + closeRequest;
352 + printRequest(ret, request);
353 + /* TODO: make conditional */

Mind containing all the printbuf related function calls together? Easier to read and understand.

375 + appendPrintBuf("[%04d]< %s",
376 + message->serial_no,
377 + ril_request_id_to_string(message->req));

Why just the append without any clear, response or print?

720 + if (cb)
721 + cb(&error, status, cbd->data);
722 + return;
723 +
724 +error:
725 + if (cb)
726 + cb(&error, -1, cbd->data);

Could probably simplify by setting up status in case of an error.

« Back to merge proposal