Changes in / [affaf2e:135486d] in mainline


Ignore:
Files:
4 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • boot/Makefile.common

    raffaf2e r135486d  
    108108        $(USPACE_PATH)/srv/fs/ext4fs/ext4fs \
    109109        $(USPACE_PATH)/srv/hid/remcons/remcons \
    110         $(USPACE_PATH)/srv/hid/isdv4_tablet/isdv4_tablet \
    111110        $(USPACE_PATH)/srv/net/ethip/ethip \
    112111        $(USPACE_PATH)/srv/net/inetsrv/inetsrv \
  • uspace/Makefile

    raffaf2e r135486d  
    101101        srv/hid/console \
    102102        srv/hid/s3c24xx_ts \
    103         srv/hid/isdv4_tablet \
    104103        srv/hid/fb \
    105104        srv/hid/input \
  • uspace/app/sportdmp/sportdmp.c

    raffaf2e r135486d  
    140140                ssize_t i;
    141141                for (i = 0; i < read; i++) {
    142                         printf("%02hhx ", buf[i]);
     142                        if ((buf[i] >= 32) && (buf[i] < 128))
     143                                putchar((wchar_t) buf[i]);
     144                        else
     145                                putchar('.');
     146                        fflush(stdout);
    143147                }
    144                 fflush(stdout);
    145148        }
    146149       
  • uspace/drv/char/ns8250/cyclic_buffer.h

    raffaf2e r135486d  
    3636#define CYCLIC_BUFFER_H_
    3737
    38 #define BUF_LEN 4096
     38#define BUF_LEN 256
    3939
    4040typedef struct cyclic_buffer {
  • uspace/drv/char/ns8250/ns8250.c

    raffaf2e r135486d  
    8282/** Interrupt ID Register definition. */
    8383#define NS8250_IID_ACTIVE       (1 << 0)
    84 #define NS8250_IID_CAUSE_MASK 0x0e
    85 #define NS8250_IID_CAUSE_RXSTATUS 0x06
    8684
    8785/** FIFO Control Register definition. */
     
    181179        /** The fibril mutex for synchronizing the access to the device. */
    182180        fibril_mutex_t mutex;
    183         /** Indicates that some data has become available */
    184         fibril_condvar_t input_buffer_available;
    185181        /** True if device is removed. */
    186182        bool removed;
     
    242238{
    243239        ns8250_t *ns = NS8250(fun);
    244         int ret = 0;
    245        
    246         if (count == 0) return 0;
     240        int ret = EOK;
    247241       
    248242        fibril_mutex_lock(&ns->mutex);
    249         while (buf_is_empty(&ns->input_buffer))
    250                 fibril_condvar_wait(&ns->input_buffer_available, &ns->mutex);
    251243        while (!buf_is_empty(&ns->input_buffer) && (size_t)ret < count) {
    252244                buf[ret] = (char)buf_pop_front(&ns->input_buffer);
     
    468460{
    469461        /* Interrupt when data received. */
    470         pio_write_8(&regs->ier, NS8250_IER_RXREADY | NS8250_IER_RXSTATUS);
     462        pio_write_8(&regs->ier, NS8250_IER_RXREADY);
    471463        pio_write_8(&regs->mcr, NS8250_MCR_DTR | NS8250_MCR_RTS
    472464            | NS8250_MCR_OUT2);
     
    507499        async_exchange_end(exch);
    508500
    509         /* Read LSR to clear possible previous LSR interrupt */
    510         pio_read_8(&ns->regs->lsr);
    511 
    512501        /* Enable interrupt on the serial port. */
    513502        ns8250_port_interrupts_enable(ns->regs);
     
    706695        /* 8 bits, no parity, two stop bits. */
    707696        ns8250_port_set_com_props(ns->regs, SERIAL_NO_PARITY, 8, 2);
    708         /*
    709          * Enable FIFO, clear them, with 4-byte threshold for greater
    710          * reliability.
    711          */
     697        /* Enable FIFO, clear them, with 14-byte threshold. */
    712698        pio_write_8(&ns->regs->iid, NS8250_FCR_FIFOENABLE
    713             | NS8250_FCR_RXFIFORESET | NS8250_FCR_TXFIFORESET
    714             | NS8250_FCR_RXTRIGGERLOW);
     699            | NS8250_FCR_RXFIFORESET | NS8250_FCR_TXFIFORESET 
     700            | NS8250_FCR_RXTRIGGERLOW | NS8250_FCR_RXTRIGGERHI);
    715701        /*
    716702         * RTS/DSR set (Request to Send and Data Terminal Ready lines enabled),
     
    745731        bool cont = true;
    746732       
    747         fibril_mutex_lock(&ns->mutex);
    748733        while (cont) {
     734                fibril_mutex_lock(&ns->mutex);
     735               
    749736                cont = ns8250_received(regs);
    750737                if (cont) {
     
    752739                       
    753740                        if (ns->client_connected) {
    754                                 bool buf_was_empty = buf_is_empty(&ns->input_buffer);
    755741                                if (!buf_push_back(&ns->input_buffer, val)) {
    756742                                        ddf_msg(LVL_WARN, "Buffer overflow on "
    757743                                            "%s.", ns->dev->name);
    758                                         break;
    759744                                } else {
    760745                                        ddf_msg(LVL_DEBUG2, "Character %c saved "
    761746                                            "to the buffer of %s.",
    762747                                            val, ns->dev->name);
    763                                         if (buf_was_empty)
    764                                                 fibril_condvar_broadcast(&ns->input_buffer_available);
    765748                                }
    766749                        }
    767750                }
    768         }
    769         fibril_mutex_unlock(&ns->mutex);
    770         fibril_yield();
     751               
     752                fibril_mutex_unlock(&ns->mutex);
     753                fibril_yield();
     754        }
    771755}
    772756
    773757/** The interrupt handler.
    774758 *
    775  * The serial port is initialized to interrupt when some data come or line
    776  * status register changes, so the interrupt is handled by reading the incoming
    777  * data and reading the line status register.
     759 * The serial port is initialized to interrupt when some data come, so the
     760 * interrupt is handled by reading the incomming data.
    778761 *
    779762 * @param dev           The serial port device.
     
    782765    ipc_call_t *icall)
    783766{
    784         ns8250_t *ns = NS8250_FROM_DEV(dev);
    785 
    786         uint8_t iir = pio_read_8(&ns->regs->iid);
    787         if ((iir & NS8250_IID_CAUSE_MASK) == NS8250_IID_CAUSE_RXSTATUS) {
    788                 uint8_t lsr = pio_read_8(&ns->regs->lsr);
    789                 if (lsr & NS8250_LSR_OE) {
    790                         ddf_msg(LVL_WARN, "Overrun error on %s", ns->dev->name);
    791                 }
    792         }
    793        
    794         ns8250_read_from_device(ns);
     767        ns8250_read_from_device(NS8250_FROM_DEV(dev));
    795768}
    796769
     
    838811       
    839812        fibril_mutex_initialize(&ns->mutex);
    840         fibril_condvar_initialize(&ns->input_buffer_available);
    841813        ns->dev = dev;
    842814       
     
    10811053static void ns8250_init(void)
    10821054{
    1083         ddf_log_init(NAME, LVL_WARN);
     1055        ddf_log_init(NAME, LVL_ERROR);
    10841056       
    10851057        ns8250_dev_ops.open = &ns8250_open;
  • uspace/lib/c/include/ipc/input.h

    raffaf2e r135486d  
    4646        INPUT_EVENT_KEY = IPC_FIRST_USER_METHOD,
    4747        INPUT_EVENT_MOVE,
    48         INPUT_EVENT_ABS_MOVE,
    4948        INPUT_EVENT_BUTTON
    5049} input_notif_t;
  • uspace/lib/c/include/ipc/mouseev.h

    raffaf2e r135486d  
    4747typedef enum {
    4848        MOUSEEV_MOVE_EVENT = IPC_FIRST_USER_METHOD,
    49         MOUSEEV_ABS_MOVE_EVENT,
    5049        MOUSEEV_BUTTON_EVENT
    5150} mouseev_notif_t;
  • uspace/srv/hid/console/console.c

    raffaf2e r135486d  
    383383       
    384384        fb_pointer_update(fb_sess, mouse.x, mouse.y, true);
    385 }
    386 
    387 static void cons_mouse_abs_move(sysarg_t x, sysarg_t y,
    388     sysarg_t max_x, sysarg_t max_y)
    389 {
    390         if (max_x && max_y) {
    391                 mouse.x = limit(x * xres / max_x, 0, xres);
    392                 mouse.y = limit(y * yres / max_y, 0, yres);
    393                
    394                 fb_pointer_update(fb_sess, mouse.x, mouse.y, true);
    395         }
    396385}
    397386
     
    514503                        async_answer_0(callid, EOK);
    515504                        break;
    516                 case INPUT_EVENT_ABS_MOVE:
    517                         cons_mouse_abs_move(IPC_GET_ARG1(call), IPC_GET_ARG2(call),
    518                             IPC_GET_ARG3(call), IPC_GET_ARG4(call));
    519                         async_answer_0(callid, EOK);
    520                         break;
    521505                case INPUT_EVENT_BUTTON:
    522506                        /* Got pointer button press/release event */
  • uspace/srv/hid/input/generic/input.c

    raffaf2e r135486d  
    191191}
    192192
    193 /** Mouse pointer has moved in absolute mode. */
    194 void mouse_push_event_abs_move(mouse_dev_t *mdev, unsigned int x, unsigned int y,
    195     unsigned int max_x, unsigned int max_y)
    196 {
    197         if (max_x && max_y) {
    198                 async_exch_t *exch = async_exchange_begin(client_sess);
    199                 async_msg_4(exch, INPUT_EVENT_ABS_MOVE, x, y, max_x, max_y);
    200                 async_exchange_end(exch);
    201         }
    202 }
    203 
    204193/** Mouse button has been pressed. */
    205194void mouse_push_event_button(mouse_dev_t *mdev, int bnum, int press)
  • uspace/srv/hid/input/include/mouse.h

    raffaf2e r135486d  
    6363extern void mouse_push_data(mouse_dev_t *, sysarg_t);
    6464extern void mouse_push_event_move(mouse_dev_t *, int, int, int);
    65 extern void mouse_push_event_abs_move(mouse_dev_t *, unsigned int, unsigned int,
    66     unsigned int, unsigned int);
    6765extern void mouse_push_event_button(mouse_dev_t *, int, int);
    6866
  • uspace/srv/hid/input/proto/mousedev.c

    raffaf2e r135486d  
    9696                        retval = EOK;
    9797                        break;
    98                 case MOUSEEV_ABS_MOVE_EVENT:
    99                         mouse_push_event_abs_move(mousedev->mouse_dev,
    100                                 IPC_GET_ARG1(call), IPC_GET_ARG2(call),
    101                                 IPC_GET_ARG3(call), IPC_GET_ARG4(call));
    102                         retval = EOK;
    103                         break;
    10498                case MOUSEEV_BUTTON_EVENT:
    10599                        mouse_push_event_button(mousedev->mouse_dev,
Note: See TracChangeset for help on using the changeset viewer.