10 SRcdpause(ScsiReq *rp, int resume)
14 memset(cmd, 0, sizeof(cmd));
18 rp->cmd.count = sizeof(cmd);
30 memset(cmd, 0, sizeof(cmd));
33 rp->cmd.count = sizeof(cmd);
41 _SRcdplay(ScsiReq *rp, long lba, long length)
45 memset(cmd, 0, sizeof(cmd));
56 rp->cmd.count = sizeof(cmd);
72 SRcdplay(ScsiReq *rp, int raw, long start, long length)
78 return _SRcdplay(rp, start, length);
81 if(SRTOC(rp, d, sizeof(d), 0, 0) == -1){
82 if(rp->status == STok)
83 Bprint(&bout, "\t(probably empty)\n");
87 for(p = &d[4], n = tdl-2; n; n -= 8, p += 8){
88 tracks[ntracks].trackno = p[2];
89 lba = (p[4]<<24)|(p[5]<<16)|(p[6]<<8)|p[7];
90 tracks[ntracks].lba = lba;
92 tracks[ntracks-1].length = lba-tracks[ntracks-1].lba;
96 tracks[ntracks-1].length = 0xFFFFFFFF;
98 for(n = 0; n < ntracks; n++){
99 if(start != tracks[n].trackno)
101 return _SRcdplay(rp, tracks[n].lba, tracks[n].length);
108 SRcdload(ScsiReq *rp, int load, int slot)
112 memset(cmd, 0, sizeof(cmd));
120 rp->cmd.count = sizeof(cmd);
124 return SRrequest(rp);
128 SRcdstatus(ScsiReq *rp, uchar *list, int nbytes)
132 memset(cmd, 0, sizeof(cmd));
133 cmd[0] = ScmdCDstatus;
137 rp->cmd.count = sizeof(cmd);
139 rp->data.count = nbytes;
141 return SRrequest(rp);
145 SRgetconf(ScsiReq *rp, uchar *list, int nbytes)
149 memset(cmd, 0, sizeof(cmd));
150 cmd[0] = Scmdgetconf;
154 rp->cmd.count = sizeof(cmd);
156 rp->data.count = nbytes;
158 return SRrequest(rp);