Lines Matching refs:cmsg
229 #define TYP (cdef[cmsg->par[cmsg->p]].typ)
230 #define OFF (((u8 *)cmsg) + cdef[cmsg->par[cmsg->p]].off)
232 static void jumpcstruct(_cmsg *cmsg) in jumpcstruct() argument
235 for (cmsg->p++, layer = 1; layer;) { in jumpcstruct()
237 cmsg->p++; in jumpcstruct()
249 static void pars_2_message(_cmsg *cmsg) in pars_2_message() argument
252 for (; TYP != _CEND; cmsg->p++) { in pars_2_message()
255 byteTLcpy(cmsg->m + cmsg->l, OFF); in pars_2_message()
256 cmsg->l++; in pars_2_message()
259 wordTLcpy(cmsg->m + cmsg->l, OFF); in pars_2_message()
260 cmsg->l += 2; in pars_2_message()
263 dwordTLcpy(cmsg->m + cmsg->l, OFF); in pars_2_message()
264 cmsg->l += 4; in pars_2_message()
268 *(cmsg->m + cmsg->l) = '\0'; in pars_2_message()
269 cmsg->l++; in pars_2_message()
271 structTLcpy(cmsg->m + cmsg->l, *(_cstruct *) OFF, 1 + **(_cstruct *) OFF); in pars_2_message()
272 cmsg->l += 1 + **(_cstruct *) OFF; in pars_2_message()
275 structTLcpy(cmsg->m + cmsg->l, s, 3 + *(u16 *) (s + 1)); in pars_2_message()
276 cmsg->l += 3 + *(u16 *) (s + 1); in pars_2_message()
282 *(cmsg->m + cmsg->l) = '\0'; in pars_2_message()
283 cmsg->l++; in pars_2_message()
284 jumpcstruct(cmsg); in pars_2_message()
288 unsigned _l = cmsg->l; in pars_2_message()
290 cmsg->l++; in pars_2_message()
291 cmsg->p++; in pars_2_message()
292 pars_2_message(cmsg); in pars_2_message()
293 _ls = cmsg->l - _l - 1; in pars_2_message()
295 (cmsg->m + _l)[0] = (u8) _ls; in pars_2_message()
297 structTLcpyovl(cmsg->m + _l + 3, cmsg->m + _l + 1, _ls); in pars_2_message()
298 (cmsg->m + _l)[0] = 0xff; in pars_2_message()
299 wordTLcpy(cmsg->m + _l + 1, &_ls); in pars_2_message()
315 unsigned capi_cmsg2message(_cmsg *cmsg, u8 *msg) in capi_cmsg2message() argument
317 cmsg->m = msg; in capi_cmsg2message()
318 cmsg->l = 8; in capi_cmsg2message()
319 cmsg->p = 0; in capi_cmsg2message()
320 cmsg->par = capi_cmd2par(cmsg->Command, cmsg->Subcommand); in capi_cmsg2message()
321 if (!cmsg->par) in capi_cmsg2message()
324 pars_2_message(cmsg); in capi_cmsg2message()
326 wordTLcpy(msg + 0, &cmsg->l); in capi_cmsg2message()
327 byteTLcpy(cmsg->m + 4, &cmsg->Command); in capi_cmsg2message()
328 byteTLcpy(cmsg->m + 5, &cmsg->Subcommand); in capi_cmsg2message()
329 wordTLcpy(cmsg->m + 2, &cmsg->ApplId); in capi_cmsg2message()
330 wordTLcpy(cmsg->m + 6, &cmsg->Messagenumber); in capi_cmsg2message()
336 static void message_2_pars(_cmsg *cmsg) in message_2_pars() argument
338 for (; TYP != _CEND; cmsg->p++) { in message_2_pars()
342 byteTRcpy(cmsg->m + cmsg->l, OFF); in message_2_pars()
343 cmsg->l++; in message_2_pars()
346 wordTRcpy(cmsg->m + cmsg->l, OFF); in message_2_pars()
347 cmsg->l += 2; in message_2_pars()
350 dwordTRcpy(cmsg->m + cmsg->l, OFF); in message_2_pars()
351 cmsg->l += 4; in message_2_pars()
354 *(u8 **) OFF = cmsg->m + cmsg->l; in message_2_pars()
356 if (cmsg->m[cmsg->l] != 0xff) in message_2_pars()
357 cmsg->l += 1 + cmsg->m[cmsg->l]; in message_2_pars()
359 cmsg->l += 3 + *(u16 *) (cmsg->m + cmsg->l + 1); in message_2_pars()
363 if (cmsg->m[cmsg->l] == '\0') { in message_2_pars()
365 cmsg->l++; in message_2_pars()
366 jumpcstruct(cmsg); in message_2_pars()
368 unsigned _l = cmsg->l; in message_2_pars()
370 cmsg->l = (cmsg->m + _l)[0] == 255 ? cmsg->l + 3 : cmsg->l + 1; in message_2_pars()
371 cmsg->p++; in message_2_pars()
372 message_2_pars(cmsg); in message_2_pars()
387 unsigned capi_message2cmsg(_cmsg *cmsg, u8 *msg) in capi_message2cmsg() argument
389 memset(cmsg, 0, sizeof(_cmsg)); in capi_message2cmsg()
390 cmsg->m = msg; in capi_message2cmsg()
391 cmsg->l = 8; in capi_message2cmsg()
392 cmsg->p = 0; in capi_message2cmsg()
393 byteTRcpy(cmsg->m + 4, &cmsg->Command); in capi_message2cmsg()
394 byteTRcpy(cmsg->m + 5, &cmsg->Subcommand); in capi_message2cmsg()
395 cmsg->par = capi_cmd2par(cmsg->Command, cmsg->Subcommand); in capi_message2cmsg()
396 if (!cmsg->par) in capi_message2cmsg()
399 message_2_pars(cmsg); in capi_message2cmsg()
401 wordTRcpy(msg + 0, &cmsg->l); in capi_message2cmsg()
402 wordTRcpy(cmsg->m + 2, &cmsg->ApplId); in capi_message2cmsg()
403 wordTRcpy(cmsg->m + 6, &cmsg->Messagenumber); in capi_message2cmsg()
420 unsigned capi_cmsg_header(_cmsg *cmsg, u16 _ApplId, in capi_cmsg_header() argument
424 memset(cmsg, 0, sizeof(_cmsg)); in capi_cmsg_header()
425 cmsg->ApplId = _ApplId; in capi_cmsg_header()
426 cmsg->Command = _Command; in capi_cmsg_header()
427 cmsg->Subcommand = _Subcommand; in capi_cmsg_header()
428 cmsg->Messagenumber = _Messagenumber; in capi_cmsg_header()
429 cmsg->adr.adrController = _Controller; in capi_cmsg_header()
648 #define NAME (pnames[cmsg->par[cmsg->p]])
650 static _cdebbuf *protocol_message_2_pars(_cdebbuf *cdb, _cmsg *cmsg, int level) in protocol_message_2_pars() argument
652 if (!cmsg->par) in protocol_message_2_pars()
655 for (; TYP != _CEND; cmsg->p++) { in protocol_message_2_pars()
667 cdb = bufprint(cdb, "%-*s = 0x%x\n", slen, NAME, *(u8 *) (cmsg->m + cmsg->l)); in protocol_message_2_pars()
668 cmsg->l++; in protocol_message_2_pars()
671 cdb = bufprint(cdb, "%-*s = 0x%x\n", slen, NAME, *(u16 *) (cmsg->m + cmsg->l)); in protocol_message_2_pars()
672 cmsg->l += 2; in protocol_message_2_pars()
675 cdb = bufprint(cdb, "%-*s = 0x%lx\n", slen, NAME, *(u32 *) (cmsg->m + cmsg->l)); in protocol_message_2_pars()
676 cmsg->l += 4; in protocol_message_2_pars()
680 if (cmsg->m[cmsg->l] == '\0') in protocol_message_2_pars()
683 cdb = printstruct(cdb, cmsg->m + cmsg->l); in protocol_message_2_pars()
685 if (cmsg->m[cmsg->l] != 0xff) in protocol_message_2_pars()
686 cmsg->l += 1 + cmsg->m[cmsg->l]; in protocol_message_2_pars()
688 cmsg->l += 3 + *(u16 *) (cmsg->m + cmsg->l + 1); in protocol_message_2_pars()
694 if (cmsg->m[cmsg->l] == '\0') { in protocol_message_2_pars()
696 cmsg->l++; in protocol_message_2_pars()
697 jumpcstruct(cmsg); in protocol_message_2_pars()
700 unsigned _l = cmsg->l; in protocol_message_2_pars()
702 cmsg->l = (cmsg->m + _l)[0] == 255 ? cmsg->l + 3 : cmsg->l + 1; in protocol_message_2_pars()
703 cmsg->p++; in protocol_message_2_pars()
704 cdb = protocol_message_2_pars(cdb, cmsg, level + 1); in protocol_message_2_pars()
771 _cmsg *cmsg; in capi_message2str() local
777 cmsg = g_cmsg; in capi_message2str()
779 cmsg = kmalloc(sizeof(_cmsg), GFP_ATOMIC); in capi_message2str()
780 if (unlikely(!cmsg)) { in capi_message2str()
784 cmsg->m = msg; in capi_message2str()
785 cmsg->l = 8; in capi_message2str()
786 cmsg->p = 0; in capi_message2str()
787 byteTRcpy(cmsg->m + 4, &cmsg->Command); in capi_message2str()
788 byteTRcpy(cmsg->m + 5, &cmsg->Subcommand); in capi_message2str()
789 cmsg->par = capi_cmd2par(cmsg->Command, cmsg->Subcommand); in capi_message2str()
792 capi_cmd2str(cmsg->Command, cmsg->Subcommand), in capi_message2str()
797 cdb = protocol_message_2_pars(cdb, cmsg, 1); in capi_message2str()
798 if (unlikely(cmsg != g_cmsg)) in capi_message2str()
799 kfree(cmsg); in capi_message2str()
814 _cdebbuf *capi_cmsg2str(_cmsg *cmsg) in capi_cmsg2str() argument
818 if (!cmsg->m) in capi_cmsg2str()
823 cmsg->l = 8; in capi_cmsg2str()
824 cmsg->p = 0; in capi_cmsg2str()
826 capi_cmd2str(cmsg->Command, cmsg->Subcommand), in capi_cmsg2str()
827 ((u16 *) cmsg->m)[1], in capi_cmsg2str()
828 ((u16 *) cmsg->m)[3], in capi_cmsg2str()
829 ((u16 *) cmsg->m)[0]); in capi_cmsg2str()
830 cdb = protocol_message_2_pars(cdb, cmsg, 1); in capi_cmsg2str()
874 _cdebbuf *capi_cmsg2str(_cmsg *cmsg) in capi_cmsg2str() argument