mirror of git://git.sysmocom.de/ofono
gisi: Make subblock iterator use new message API
This commit is contained in:
parent
785771f0be
commit
4f14a6c179
16
gisi/iter.c
16
gisi/iter.c
|
@ -45,10 +45,13 @@ static inline void bcd_to_mccmnc(const uint8_t *restrict bcd,
|
||||||
mnc[3] = '\0';
|
mnc[3] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const void *restrict data,
|
void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const GIsiMessage *msg,
|
||||||
size_t len, size_t used, gboolean longhdr,
|
size_t used, gboolean longhdr,
|
||||||
uint16_t sub_blocks)
|
uint16_t sub_blocks)
|
||||||
{
|
{
|
||||||
|
const uint8_t *data = g_isi_msg_data(msg);
|
||||||
|
size_t len = g_isi_msg_data_len(msg);
|
||||||
|
|
||||||
if (!data)
|
if (!data)
|
||||||
len = used = 0;
|
len = used = 0;
|
||||||
|
|
||||||
|
@ -58,9 +61,12 @@ void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const void *restrict data,
|
||||||
iter->sub_blocks = len > used ? sub_blocks : 0;
|
iter->sub_blocks = len > used ? sub_blocks : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void g_isi_sb_iter_init(GIsiSubBlockIter *iter, const void *restrict data,
|
void g_isi_sb_iter_init(GIsiSubBlockIter *iter, const GIsiMessage *msg,
|
||||||
size_t len, size_t used)
|
size_t used)
|
||||||
{
|
{
|
||||||
|
const uint8_t *data = g_isi_msg_data(msg);
|
||||||
|
size_t len = g_isi_msg_data_len(msg);
|
||||||
|
|
||||||
if (!data)
|
if (!data)
|
||||||
len = used = 0;
|
len = used = 0;
|
||||||
|
|
||||||
|
@ -107,6 +113,7 @@ gboolean g_isi_sb_iter_get_data(const GIsiSubBlockIter *restrict iter,
|
||||||
if ((size_t)pos > g_isi_sb_iter_get_len(iter)
|
if ((size_t)pos > g_isi_sb_iter_get_len(iter)
|
||||||
|| iter->start + pos > iter->end)
|
|| iter->start + pos > iter->end)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
*data = (void *)iter->start + pos;
|
*data = (void *)iter->start + pos;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -117,6 +124,7 @@ gboolean g_isi_sb_iter_get_byte(const GIsiSubBlockIter *restrict iter,
|
||||||
if ((size_t)pos > g_isi_sb_iter_get_len(iter)
|
if ((size_t)pos > g_isi_sb_iter_get_len(iter)
|
||||||
|| iter->start + pos > iter->end)
|
|| iter->start + pos > iter->end)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
*byte = iter->start[pos];
|
*byte = iter->start[pos];
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
16
gisi/iter.h
16
gisi/iter.h
|
@ -28,22 +28,20 @@ extern "C" {
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "message.h"
|
||||||
|
|
||||||
struct _GIsiSubBlockIter {
|
struct _GIsiSubBlockIter {
|
||||||
uint8_t *start;
|
uint8_t *start;
|
||||||
uint8_t *end;
|
uint8_t *end;
|
||||||
uint16_t longhdr;
|
gboolean longhdr;
|
||||||
uint16_t sub_blocks;
|
uint16_t sub_blocks;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _GIsiSubBlockIter GIsiSubBlockIter;
|
typedef struct _GIsiSubBlockIter GIsiSubBlockIter;
|
||||||
|
|
||||||
void g_isi_sb_iter_init(GIsiSubBlockIter *iter,
|
void g_isi_sb_iter_init(GIsiSubBlockIter *iter, const GIsiMessage *msg,
|
||||||
const void *restrict data,
|
size_t used);
|
||||||
size_t len, size_t used);
|
void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const GIsiMessage *msg,
|
||||||
void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter,
|
size_t used, gboolean longhdr,
|
||||||
const void *restrict data,
|
|
||||||
size_t len, size_t used,
|
|
||||||
gboolean longhdr,
|
|
||||||
uint16_t sub_blocks);
|
uint16_t sub_blocks);
|
||||||
gboolean g_isi_sb_iter_is_valid(const GIsiSubBlockIter *iter);
|
gboolean g_isi_sb_iter_is_valid(const GIsiSubBlockIter *iter);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue