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

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

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

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

IT-новости

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

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

подробнее

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

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

подробнее

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

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

подробнее

 

Рисунок 16. Формат блока данных о текущей позиции оптического элемента

Заголовок блока содержит длину считанных из устройства данных. Координаты текущей позиции оптического элемента находятся в поле Absolute CD-ROM Address.

Функция, выполняющая позиционирование оптического элемента устройства на заданный сектор:

int seek(__u32 lba)

{

    struct cdrom_generic_command cgc;

    struct request_sense sense;

 

    memset((void *)&cgc, 0, sizeof(struct cdrom_generic_command));

    memset(&sense, 0, sizeof(sense));

 

/* Формируем пакетную команду */

    cgc.cmd[0] = GPCMD_SEEK; // код команды SEEK (0x2B)

    cgc.sense = &sense;

    cgc.data_direction = CGC_DATA_NONE; // нет обмена данными

 

/* Координаты сектора */

    lba = __swab32(lba);

    memcpy((void *)(cgc.cmd + 2), (void *)&lba, 4);

 

    if(ioctl(fd, CDROM_SEND_PACKET, &cgc) < 0) {

           perror("ioctl");

           printf("Sense key - 0x%02x ", sense.sense_key);

           printf("ASC - 0x%02x ", sense.asc);

           printf("ASCQ - 0x%02x ", sense.ascq);

           return -1;

    }

 

    return 0;

}

Следующая структура описывает формат блока данных о текущей позиции оптического элемента (см. рис.16):

struct current_position {

    __u8 dfc;           // Data Format Code

    __u8 ctrl    :4;    // Control

    __u8 adr     :4;    // ADR

    __u8 tno;           // Track number

    __u8 ino;           // Index number

    __u32 a_addr;       // Absolute CD-ROM Address

    __u32 r_addr;       // Track Relative CD-ROM Address

} __attribute__ ((packed)) cur_pos;

Функция, выполняющая чтение данных о текущей позиции оптического элемента устройства:

void read_subch()

{

    __u16 buff_size = 16;      // размер запрашиваемых данных (4 байта заголовка + 12 байт данных)

    __u8 *data_buff;           // указатель на буфер для данных Q-субканала

    __u16 sch_length = 0;      // размер блока данных Q-субканала

    struct cdrom_generic_command cgc;

    struct request_sense sense;

 

    memset((void *)&cgc, 0, sizeof(struct cdrom_generic_command));

    memset(&sense, 0, sizeof(struct request_sense));

 

/* Выделяем память */

    data_buff = (__u8 *)malloc(buff_size);

    memset(data_buff, 0, buff_size);

 

/* Формируем пакетную команду */

    cgc.cmd[0] = GPCMD_READ_SUBCHANNEL; // код команды

    cgc.cmd[2] = 0x40; // бит SUBQ установлен – данные Q-субканала считываются

    cgc.cmd[3] = 1; // читаем данные о текущей позиции

    cgc.sense = &sense;

    cgc.data_direction = CGC_DATA_READ; // направление передачи данных


Предыдущая страницаОглавлениеСледующая страница
 
[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