Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/tester/hw/serial/serial1.c

    r79ae36dd r8b1e15ac  
    7171                }
    7272       
     73        int res = devman_get_phone(DEVMAN_CLIENT, IPC_FLAG_BLOCKING);
     74       
    7375        devman_handle_t handle;
    74         int res = devman_device_get_handle("/hw/pci0/00:01.0/com1/a", &handle,
     76        res = devman_device_get_handle("/hw/pci0/00:01.0/com1/a", &handle,
    7577            IPC_FLAG_BLOCKING);
    7678        if (res != EOK)
    7779                return "Could not get serial device handle";
    7880       
    79         async_sess_t *sess = devman_device_connect(EXCHANGE_SERIALIZE, handle,
    80             IPC_FLAG_BLOCKING);
    81         if (!sess)
     81        int phone = devman_device_connect(handle, IPC_FLAG_BLOCKING);
     82        if (phone < 0) {
     83                devman_hangup_phone(DEVMAN_CLIENT);
    8284                return "Unable to connect to serial device";
     85        }
    8386       
    8487        char *buf = (char *) malloc(cnt + 1);
    8588        if (buf == NULL) {
    86                 async_hangup(sess);
     89                async_hangup(phone);
     90                devman_hangup_phone(DEVMAN_CLIENT);
    8791                return "Failed to allocate input buffer";
    8892        }
     
    9397        sysarg_t old_word_size;
    9498       
    95         async_exch_t *exch = async_exchange_begin(sess);
    96         res = async_req_0_4(exch, SERIAL_GET_COM_PROPS, &old_baud,
     99        res = async_req_0_4(phone, SERIAL_GET_COM_PROPS, &old_baud,
    97100            &old_par, &old_word_size, &old_stop);
    98         async_exchange_end(exch);
    99        
    100101        if (res != EOK) {
    101102                free(buf);
    102                 async_hangup(sess);
     103                async_hangup(phone);
     104                devman_hangup_phone(DEVMAN_CLIENT);
    103105                return "Failed to get old serial communication parameters";
    104106        }
    105107       
    106         exch = async_exchange_begin(sess);
    107         res = async_req_4_0(exch, SERIAL_SET_COM_PROPS, 1200,
     108        res = async_req_4_0(phone, SERIAL_SET_COM_PROPS, 1200,
    108109            SERIAL_NO_PARITY, 8, 1);
    109         async_exchange_end(exch);
    110        
    111110        if (EOK != res) {
    112111                free(buf);
    113                 async_hangup(sess);
     112                async_hangup(phone);
     113                devman_hangup_phone(DEVMAN_CLIENT);
    114114                return "Failed to set serial communication parameters";
    115115        }
     
    120120        size_t total = 0;
    121121        while (total < cnt) {
    122                 ssize_t read = char_dev_read(sess, buf, cnt - total);
     122                ssize_t read = char_dev_read(phone, buf, cnt - total);
    123123               
    124124                if (read < 0) {
    125                         exch = async_exchange_begin(sess);
    126                         async_req_4_0(exch, SERIAL_SET_COM_PROPS, old_baud,
     125                        async_req_4_0(phone, SERIAL_SET_COM_PROPS, old_baud,
    127126                            old_par, old_word_size, old_stop);
    128                         async_exchange_end(exch);
    129                        
    130127                        free(buf);
    131                         async_hangup(sess);
     128                        async_hangup(phone);
     129                        devman_hangup_phone(DEVMAN_CLIENT);
    132130                        return "Failed read from serial device";
    133131                }
    134132               
    135133                if ((size_t) read > cnt - total) {
    136                         exch = async_exchange_begin(sess);
    137                         async_req_4_0(exch, SERIAL_SET_COM_PROPS, old_baud,
     134                        async_req_4_0(phone, SERIAL_SET_COM_PROPS, old_baud,
    138135                            old_par, old_word_size, old_stop);
    139                         async_exchange_end(exch);
    140                        
    141136                        free(buf);
    142                         async_hangup(sess);
     137                        async_hangup(phone);
     138                        devman_hangup_phone(DEVMAN_CLIENT);
    143139                        return "Read more data than expected";
    144140                }
     
    155151                         * direction of data transfer.
    156152                         */
    157                         ssize_t written = char_dev_write(sess, buf, read);
     153                        ssize_t written = char_dev_write(phone, buf, read);
    158154                       
    159155                        if (written < 0) {
    160                                 exch = async_exchange_begin(sess);
    161                                 async_req_4_0(exch, SERIAL_SET_COM_PROPS, old_baud,
     156                                async_req_4_0(phone, SERIAL_SET_COM_PROPS, old_baud,
    162157                                    old_par, old_word_size, old_stop);
    163                                 async_exchange_end(exch);
    164                                
    165158                                free(buf);
    166                                 async_hangup(sess);
     159                                async_hangup(phone);
     160                                devman_hangup_phone(DEVMAN_CLIENT);
    167161                                return "Failed write to serial device";
    168162                        }
    169163                       
    170164                        if (written != read) {
    171                                 exch = async_exchange_begin(sess);
    172                                 async_req_4_0(exch, SERIAL_SET_COM_PROPS, old_baud,
     165                                async_req_4_0(phone, SERIAL_SET_COM_PROPS, old_baud,
    173166                                    old_par, old_word_size, old_stop);
    174                                 async_exchange_end(exch);
    175                                
    176167                                free(buf);
    177                                 async_hangup(sess);
     168                                async_hangup(phone);
     169                                devman_hangup_phone(DEVMAN_CLIENT);
    178170                                return "Written less data than read from serial device";
    179171                        }
     
    188180       
    189181        size_t eot_size = str_size(EOT);
    190         ssize_t written = char_dev_write(sess, (void *) EOT, eot_size);
    191        
    192         exch = async_exchange_begin(sess);
    193         async_req_4_0(exch, SERIAL_SET_COM_PROPS, old_baud,
     182        ssize_t written = char_dev_write(phone, (void *) EOT, eot_size);
     183       
     184        async_req_4_0(phone, SERIAL_SET_COM_PROPS, old_baud,
    194185            old_par, old_word_size, old_stop);
    195         async_exchange_end(exch);
    196        
    197186        free(buf);
    198         async_hangup(sess);
     187        async_hangup(phone);
     188        devman_hangup_phone(DEVMAN_CLIENT);
    199189       
    200190        if (written < 0)
Note: See TracChangeset for help on using the changeset viewer.