Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

 

    port = 0x170;

 

/* В регистр данных записываем 12-байтный командный пакет */

    for(i = 0; i < 12; i += 2) {

           memcpy((void *)&a, (cmd_buff + i), 2);

           OUT_P_W(a, port);

    }

 

/* Ждём завершения команды - установленного бита DRQ. Если произошла ошибка - фиксируем этот факт */

    port = 0x177;

    for(;;) {

           do {

                 IN_P_B(status, port);

           } while(status & BSY);

           // ошибка выполнения команды!

           if(status & ERR) return -1;

           if(status & DRQ) break;

    }

 

    return 0;

}

 

В качестве примеров пакетных команд, требующих передачи данных от устройства к хосту, рассмотрим следующий список:

n  INQUIRY

n  READ CD

n  REQUEST SENSE

n  READ TOC

n  SEEK

n  READ SUB-CHANNEL

 

По команде INQUIRY устройство выдаёт блок информации о своих параметрах. Формат команды INQUIRY следующий:

n  байт 0 – код команды INQUIRY, значение 0x12;

n  байт 4 – размер выделенной области для считываемых данных.

Формат стандартной справки, выдаваемой по команде INQUIRY, приведен на рис. 3 (INF-8020i, п. 10.8.1.1, стр. 94.).

Функция read_inquiry() считывает идентификатор изготовителя (Vendor Identification), идентификатор изделия (Product Identification) и версию изделия (Product Revision Level):

int read_inquiry()

{

int i = 0;

    __u8 cmd_buff[12];

    __u16 inquiry_buff[20]; // буфер для считываемых данных

    __u8 data_len = 40; // размер запрашиваемых данных

 

    memset(inquiry_buff, 0, 40);

    memset((void *)cmd_buff, 0, 12);

 

    cmd_buff[0] = 0x12; // код команды INQUIRY

    cmd_buff[4] = data_len;

 

/* Посылаем устройству пакетную команду */

    if(send_packet_data_command(data_len, cmd_buff) < 0) {

           printf("INQUIRY command error ");

           return -1;

    }

 

/* Считываем результат и отображаем его */

    for(i = 0; i < 20; i++) IN_P_W(inquiry_buff[i], 0x170);

    printf("%s ", inquiry_buff + 4);

 

    return 0;

}

Полный листинг программы чтения идентификационной информации устройства находится в файле RAW/inquiry_cd.c.

INQUIRY Data Format

Bit

Byte

7

6

5

4

3

2

1

0

0

Reserved

Peripheral Device Type

1

RMB

Reserved

2

ISO Version

ECMA Version

ANSI Version (00)

3

ATAPI Version

Response Data Format

4

Additional Length (Number of bytes following this one)

5

Reserved

6

Reserved

7

Reserved

8

Vendor Identification

15

16

Product Identification

31

32

Product Revision Level

35

36

Vendor-specific

55

.....


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160]
[161]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100