chansrv: work on smartcard

ulab-next
Jay Sorg 11 years ago
parent 6c07ee0ba3
commit 8b48e2274e

@ -22,7 +22,7 @@
* this will act like pcsc daemon * this will act like pcsc daemon
*/ */
#define PCSC_STANDIN 0 #define PCSC_STANDIN 1
#include "os_calls.h" #include "os_calls.h"
#include "smartcard.h" #include "smartcard.h"
@ -56,20 +56,23 @@ struct version_struct
}; };
typedef struct version_struct version_struct; typedef struct version_struct version_struct;
typedef struct rxSharedSegment struct rxSharedSegment
{ {
tui32 mtype; /** one of the \c pcsc_adm_commands */ tui32 mtype; /** one of the \c pcsc_adm_commands */
tui32 user_id; tui32 user_id;
tui32 group_id; tui32 group_id;
tui32 command; /** one of the \c pcsc_msg_commands */ tui32 command; /** one of the \c pcsc_msg_commands */
tui64 date; tui64 date;
unsigned char key[PCSCLITE_MSG_KEY_LEN]; /* 16 bytes */ tui8 key[PCSCLITE_MSG_KEY_LEN]; /* 16 bytes */
union _u union _u
{ {
unsigned char data[PCSCLITE_MAX_MESSAGE_SIZE]; tui8 data[PCSCLITE_MAX_MESSAGE_SIZE];
struct version_struct veStr; struct version_struct veStr;
} u; } u;
} sharedSegmentMsg, *psharedSegmentMsg; };
typedef struct rxSharedSegment sharedSegmentMsg, *psharedSegmentMsg;
#define RXSHAREDSEGMENT_BYTES 2088
extern int g_display_num; /* in chansrv.c */ extern int g_display_num; /* in chansrv.c */
@ -122,19 +125,35 @@ scard_pcsc_check_wait_objs(void)
/*****************************************************************************/ /*****************************************************************************/
/* returns error */ /* returns error */
int APP_CC int APP_CC
scard_process_msg(struct stream *s) scard_process_version(psharedSegmentMsg msg)
{ {
psharedSegmentMsg msg; return 0;
}
/*****************************************************************************/
/* returns error */
int APP_CC
scard_process_msg(struct stream *s)
{
sharedSegmentMsg msg;
int rv;
g_memset(&msg, 0, sizeof(msg));
in_uint32_le(s, msg.mtype);
in_uint32_le(s, msg.user_id);
in_uint32_le(s, msg.group_id);
in_uint32_le(s, msg.command);
in_uint64_le(s, msg.date);
LLOGLN(0, ("scard_process_msg: mtype 0x%2.2x command 0x%2.2x", LLOGLN(0, ("scard_process_msg: mtype 0x%2.2x command 0x%2.2x",
msg->mtype, msg->command)); msg.mtype, msg.command));
msg = (psharedSegmentMsg)(s->p); rv = 0;
switch (msg->mtype) switch (msg.mtype)
{ {
case 0xF8: /* CMD_VERSION */ case 0xF8: /* CMD_VERSION */
rv = scard_process_version(&msg);
break; break;
} }
return 0; return rv;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -187,7 +206,7 @@ my_pcsc_trans_conn_in(struct trans *trans, struct trans *new_trans)
g_con = new_trans; g_con = new_trans;
g_con->trans_data_in = my_pcsc_trans_data_in; g_con->trans_data_in = my_pcsc_trans_data_in;
g_con->header_size = sizeof(sharedSegmentMsg); g_con->header_size = RXSHAREDSEGMENT_BYTES;
LLOGLN(0, ("my_pcsc_trans_conn_in: sizeof sharedSegmentMsg is %d", LLOGLN(0, ("my_pcsc_trans_conn_in: sizeof sharedSegmentMsg is %d",
sizeof(sharedSegmentMsg))); sizeof(sharedSegmentMsg)));

Loading…
Cancel
Save