void cCam::WriteCW(int index, unsigned char *cw, bool force)
{
if(index<MAX_CW_IDX) {
for(int i=0; i<16; i+=4) cw[i+3]=cw[i]+cw[i+1]+cw[i+2];
ca_descr_t ca_descr;
ca_descr.index=index;
unsigned char *last=lastCW[index];
if(force || memcmp(&cw[0],&last[0],8)) {
memcpy(&last[0],&cw[0],8);
ca_descr.parity=0;
memcpy(ca_descr.cw,&cw[0],8);
if(!SetCaDescr(&ca_descr,force))
PRINTF(L_GEN_ERROR,"CA_SET_DESCR failed (%s). Expect a black screen.",strerror(errno));
}
if(force || memcmp(&cw[8],&last[8],8)) {
memcpy(&last[8],&cw[8],8);
ca_descr.parity=1;
memcpy(ca_descr.cw,&cw[8],8);
if(!SetCaDescr(&ca_descr,force))
PRINTF(L_GEN_ERROR,"CA_SET_DESCR failed (%s). Expect a black screen.",strerror(errno));
}
}
}