Lines Matching refs:device

69 switch_to_command_mode(dialup_device* device)
71 if (device->state != UP)
74 if (!device->data_mode)
77 snooze(device->escape_silence);
79 ssize_t size = write(device->fd, device->escape_string,
80 strlen(device->escape_string));
81 if (size != (ssize_t)strlen(device->escape_string))
84 snooze(device->escape_silence);
85 device->data_mode = false;
92 switch_to_data_mode(dialup_device* device)
94 if (device->state != UP)
97 if (device->data_mode)
103 ssize_t size = write(device->fd, "ATO", 3);
107 device->data_mode = true;
114 send_command(dialup_device* device, const char* command)
117 if (device->data_mode) {
118 status = switch_to_command_mode(device);
123 ssize_t bytesWritten = write(device->fd, command, strlen(command));
127 if (write(device->fd, "\r", 1) != 1)
135 read_command_reply(dialup_device* device, const char* command,
138 if (device->data_mode)
144 ssize_t bytesRead = read(device->fd, &reply[i], 1);
173 hangup(dialup_device* device)
175 if (device->state != UP)
178 // TODO: turn device's DTR down instead. Or do that too after sending command
181 if (send_command(device, device->hangup_string) != B_OK
182 || read_command_reply(device, device->hangup_string,
187 device->state = DOWN;
198 // make sure this is a device in /dev/ports
206 dialup_device* device = new (std::nothrow)dialup_device;
207 if (device == NULL) {
212 memset(device, 0, sizeof(dialup_device));
214 strcpy(device->name, name);
215 device->flags = IFF_POINTOPOINT;
216 device->type = IFT_PPP; // this device handle RFC 1331 frame format only
217 device->mtu = 1500;
218 device->media = 0;
219 device->header_length = HDLC_HEADER_LENGTH;
221 device->fd = -1;
222 device->state = DOWN;
223 device->data_mode = false;
224 device->last_closing_flag_sequence_time = 0;
227 strncpy(device->init_string, "ATZ", sizeof(device->init_string));
228 strncpy(device->dial_string, "ATDT", sizeof(device->dial_string));
229 strncpy(device->hangup_string, "ATH0", sizeof(device->hangup_string));
231 strncpy(device->escape_string, "+++", sizeof(device->escape_string));
232 device->escape_silence = 1000000;
234 device->tx_flag_timeout = 1000000;
237 memset(&device->rx_accm, 0xFF, sizeof(device->rx_accm));
238 memset(&device->tx_accm, 0xFF, sizeof(device->tx_accm));
240 *_device = device;
248 dialup_device* device = (dialup_device*)_device;
249 delete device;
260 dialup_device* device = (dialup_device*)_device;
262 device->fd = open(device->name, O_RDWR);
263 if (device->fd < 0)
266 device->media = IFM_ACTIVE;
269 if (ioctl(device->fd, TCGETA, &device->line_config,
270 sizeof(device->line_config)) < 0)
274 device->line_config.c_cflag &= ~CBAUD;
275 device->line_config.c_cflag &= CSIZE;
276 device->line_config.c_cflag &= CS8;
277 device->line_config.c_cflag |= B115200; // TODO: make this configurable too...
278 device->line_config.c_cflag |= (CLOCAL | CREAD);
279 device->line_config.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
280 device->line_config.c_oflag &= ~OPOST;
281 device->line_config.c_cc[VMIN] = 0;
282 device->line_config.c_cc[VTIME] = 10;
285 if(ioctl(device->fd, TCSETA, &device->line_config,
286 sizeof(device->line_config)) < 0)
293 if (strlen(device->init_string) > 0) {
295 if (send_command(device, device->init_string) != B_OK
296 || read_command_reply(device, device->init_string,
306 if (strlen(device->dial_string) > 0) {
308 device->state = DIALING;
309 if (send_command(device, device->dial_string) != B_OK
310 || read_command_reply(device, device->dial_string,
318 device->state = UP;
319 device->data_mode = true;
321 device->media |= IFM_FULL_DUPLEX;
322 device->flags |= IFF_LINK;
324 device->link_quality = 1000;
327 device->link_speed = atoi(&reply[8]);
330 device->link_speed = 19200;
336 close(device->fd);
337 device->fd = -1;
338 device->media = 0;
347 dialup_device* device = (dialup_device*)_device;
349 if (device->flags & IFF_LINK
350 && hangup(device) == B_OK)
351 device->flags &= ~IFF_LINK;
353 close(device->fd);
354 device->fd = -1;
355 device->media = 0;
363 dialup_device* device = (dialup_device*)_device;
364 return ioctl(device->fd, op, argument, length);
371 dialup_device* device = (dialup_device*)_device;
373 if (device->fd == -1)
415 if (device->tx_flag_timeout
416 && system_time() - device->last_closing_flag_sequence_time
417 > device->tx_flag_timeout) {
444 bytesWritten = write(device->fd, packet, packetSize);
449 device->last_closing_flag_sequence_time = system_time();
465 dialup_device* device = (dialup_device*)_device;
467 if (device->fd == -1)
484 device->mtu + HDLC_HEADER_LENGTH, (void**)&data);
486 dprintf("scattered I/O is not yet supported by dialup device.\n");
493 bytesRead = read(device->fd, data, device->mtu + HDLC_HEADER_LENGTH);
501 atomic_add((int32*)&device->stats.receive.dropped, 1);
521 dialup_device* device = (dialup_device*)_device;
523 device->mtu = mtu;
536 dialup_set_media(net_device* device, uint32 media)