kopia lustrzana https://gitlab.com/sane-project/backends
pixma_bjnp.c Minor code cleanups, add #defines for mosts hardcoded values
rodzic
1b4cce5f2d
commit
177fde920c
|
@ -529,8 +529,7 @@ udp_command (const int dev_no, char *command, int cmd_len, char *response,
|
|||
struct BJNP_command *resp = (struct BJNP_command *) response;
|
||||
struct BJNP_command *cmd = (struct BJNP_command *) command;
|
||||
|
||||
/* TODO: add symbol constant */
|
||||
for (try = 0; try < 3; try++)
|
||||
for (try = 0; try < BJNP_UDP_RETRY_MAX; try++)
|
||||
{
|
||||
if ((numbytes = send (sockfd, command, cmd_len, 0)) != cmd_len)
|
||||
{
|
||||
|
@ -553,7 +552,7 @@ udp_command (const int dev_no, char *command, int cmd_len, char *response,
|
|||
}
|
||||
while (((result =
|
||||
select (sockfd + 1, &fdset, NULL, NULL, &timeout)) <= 0)
|
||||
&& (errno == EINTR) && (attempt++ < MAX_SELECT_ATTEMPTS)
|
||||
&& (errno == EINTR) && (attempt++ < BJNP_MAX_SELECT_ATTEMPTS)
|
||||
&& resp-> seq_no != cmd->seq_no);
|
||||
|
||||
if (result <= 0)
|
||||
|
@ -800,6 +799,7 @@ prepare_socket(const char *if_name, const struct sockaddr *local_sa,
|
|||
|
||||
int socket = -1;
|
||||
struct sockaddr_storage local_sa_s;
|
||||
memset( &local_sa_s, 0, sizeof(local_sa_s) );
|
||||
|
||||
if ( local_sa == NULL )
|
||||
{
|
||||
|
@ -849,7 +849,6 @@ prepare_socket(const char *if_name, const struct sockaddr *local_sa,
|
|||
#ifdef ENABLE_IPV6
|
||||
case AF_INET6:
|
||||
{
|
||||
/* TODO: initialize all sockaddr_in6 to 0!! */
|
||||
struct sockaddr_in6 *dest_sa_6 = (struct sockaddr_in6 *) dest_sa;
|
||||
struct sockaddr_in6 *local_sa_6 = (struct sockaddr_in6 *) &local_sa_s;
|
||||
|
||||
|
@ -968,8 +967,8 @@ bjnp_poll_scanner (int devno, char type,char *hostname, char *user, SANE_Byte *s
|
|||
int user_host_len;
|
||||
|
||||
poll = (struct POLL_DETAILS *) (cmd_buf);
|
||||
memset(poll, 0, sizeof( struct POLL_DETAILS));
|
||||
memset(resp_buf, 0, sizeof( resp_buf) );
|
||||
memset( &poll, 0, sizeof( struct POLL_DETAILS));
|
||||
memset( &resp_buf, 0, sizeof( resp_buf) );
|
||||
|
||||
|
||||
/* create payload */
|
||||
|
@ -1244,7 +1243,7 @@ bjnp_recv_header (int devno)
|
|||
timeout.tv_usec = 0;
|
||||
}
|
||||
while (((result = select (fd + 1, &input, NULL, NULL, &timeout)) == -1) &&
|
||||
(errno == EINTR) && (attempt++ < MAX_SELECT_ATTEMPTS));
|
||||
(errno == EINTR) && (attempt++ < BJNP_MAX_SELECT_ATTEMPTS));
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
|
@ -1347,7 +1346,7 @@ bjnp_recv_data (int devno, SANE_Byte * buffer, size_t * len)
|
|||
timeout.tv_usec = 0;
|
||||
}
|
||||
while (((result = select (fd + 1, &input, NULL, NULL, &timeout)) == -1) &&
|
||||
(errno == EINTR) && (attempt++ < MAX_SELECT_ATTEMPTS));
|
||||
(errno == EINTR) && (attempt++ < BJNP_MAX_SELECT_ATTEMPTS));
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
|
@ -1506,8 +1505,8 @@ bjnp_allocate_device (SANE_String_Const devname, const char *mac_address_string
|
|||
|
||||
/* both a struct sockaddr_in and a sockaddr_in6 fit in sockaddr_storage */
|
||||
device[*dn].addr = (struct sockaddr *) malloc(sizeof ( struct sockaddr_storage) );
|
||||
|
||||
memcpy(device[*dn].addr, res-> ai_addr, sizeof(struct sockaddr_in6) );
|
||||
memset( device[*dn].addr, 0, sizeof( struct sockaddr ) );
|
||||
memcpy(device[*dn].addr, res-> ai_addr, sizeof(struct sockaddr_storage) );
|
||||
|
||||
device[*dn].session_id = 0;
|
||||
device[*dn].serial = -1;
|
||||
|
@ -1642,6 +1641,8 @@ sanei_bjnp_find_devices (const char **conf_devices,
|
|||
socklen_t socklen;
|
||||
char mac_address_string[BJNP_SERIAL_MAX];
|
||||
|
||||
memset( broadcast_addr, 0, sizeof( broadcast_addr) );
|
||||
memset( &scanner_sa, 0 ,sizeof( scanner_sa ) );
|
||||
PDBG (pixma_dbg (LOG_INFO, "sanei_bjnp_find_devices:\n"));
|
||||
bjnp_no_devices = 0;
|
||||
|
||||
|
@ -1709,9 +1710,11 @@ sanei_bjnp_find_devices (const char **conf_devices,
|
|||
struct sockaddr_storage local;
|
||||
struct sockaddr_in * local_4 = (struct sockaddr_in *) &local;
|
||||
struct sockaddr_in bc_addr_4;
|
||||
|
||||
#ifdef ENABLE_IPV6
|
||||
struct sockaddr_in6 * local_6 = (struct sockaddr_in6 *) &local;
|
||||
#endif
|
||||
memset( &local, 0, sizeof( local) );
|
||||
local_4 -> sin_family = AF_INET;
|
||||
local_4 -> sin_addr.s_addr = htonl (INADDR_ANY);
|
||||
|
||||
|
@ -1753,8 +1756,8 @@ sanei_bjnp_find_devices (const char **conf_devices,
|
|||
}
|
||||
#endif
|
||||
|
||||
/* send MAX_SELECT_ATTEMPTS broadcasts on each prepared socket */
|
||||
for (attempt = 0; attempt < MAX_SELECT_ATTEMPTS; attempt++)
|
||||
/* send BJNP_MAX_BROADCAST_ATTEMPTS broadcasts on each prepared socket */
|
||||
for (attempt = 0; attempt < BJNP_MAX_BROADCAST_ATTEMPTS; attempt++)
|
||||
{
|
||||
for ( i=0; i < no_sockets; i++)
|
||||
{
|
||||
|
@ -1767,7 +1770,8 @@ sanei_bjnp_find_devices (const char **conf_devices,
|
|||
/* wait for a UDP response */
|
||||
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 500 * USLEEP_MS;
|
||||
timeout.tv_usec = BJNP_BC_RESPONSE_TIMEOUT * USLEEP_MS;
|
||||
|
||||
|
||||
active_fdset = fdset;
|
||||
|
||||
|
@ -1811,11 +1815,9 @@ sanei_bjnp_find_devices (const char **conf_devices,
|
|||
{
|
||||
/* not a response, a command from somebody else or */
|
||||
/* a discover command that we generated */
|
||||
printf("discarded command\n");
|
||||
break;
|
||||
}
|
||||
};
|
||||
printf("Received response\n");
|
||||
|
||||
/* scanner found, get IP-address and hostname */
|
||||
u8tohex( mac_address_string, disc_resp -> mac_addr, sizeof(disc_resp -> mac_addr) );
|
||||
|
@ -1831,7 +1833,7 @@ printf("Received response\n");
|
|||
}
|
||||
active_fdset = fdset;
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 500 * USLEEP_MS;
|
||||
timeout.tv_usec = BJNP_BC_RESPONSE_TIMEOUT * USLEEP_MS;
|
||||
}
|
||||
PDBG (pixma_dbg (LOG_DEBUG, "scanner discovery finished...\n"));
|
||||
|
||||
|
|
|
@ -55,6 +55,8 @@
|
|||
* BJNP definitions
|
||||
*/
|
||||
|
||||
/* sizes */
|
||||
|
||||
#define BJNP_PRINTBUF_MAX 1400 /* size of printbuffer */
|
||||
#define BJNP_CMD_MAX 2048 /* size of BJNP response buffer */
|
||||
#define BJNP_RESP_MAX 2048 /* size of BJNP response buffer */
|
||||
|
@ -68,13 +70,18 @@
|
|||
#define BJNP_ARGS_MAX 128 /* max length of argument string */
|
||||
#define BJNP_SERIAL_MAX 16 /* maximum length of serial number */
|
||||
#define BJNP_NO_DEVICES 16 /* max number of open devices */
|
||||
|
||||
/* timers */
|
||||
#define BJNP_BROADCAST_INTERVAL 10 /* ms between broadcasts */
|
||||
#define SCAN_BUF_MAX 65536 /* size of scanner data intermediate buffer */
|
||||
#define MAX_SELECT_ATTEMPTS 3 /* max nr of retries on select (EINTR) */
|
||||
#define BJNP_BC_RESPONSE_TIMEOUT 500 /* waiting time for broadc. responses */
|
||||
#define BJNP_SCAN_BUF_MAX 65536 /* size of scanner data intermediate buffer */
|
||||
#define USLEEP_MS 1000 /* sleep for 1 msec */
|
||||
#define BJNP_TIMEOUT_UDP 2 /* standard UDP timeout */
|
||||
#define BJNP_TIMEOUT_TCP 4 /* standard TCP timeout */
|
||||
|
||||
#define BJNP_MAX_SELECT_ATTEMPTS 3 /* max nr of retries on select (EINTR) */
|
||||
#define BJNP_MAX_BROADCAST_ATTEMPTS 2 /* number of broadcast packets to be sent */
|
||||
#define BJNP_UDP_RETRY_MAX 3 /* max nt of retries on a udp command */
|
||||
#define BJNP_RESTART_POLL -1 /* lost poll dialog, restart dialog */
|
||||
|
||||
/* This works now, disable when it gives you problems */
|
||||
|
|
Ładowanie…
Reference in New Issue