You're not adding constness. You're trying to convert a pointer to one type (unsigned short*) to a pointer to a different, unrelated type (const unsigned short *). Adding const is only allowed at the outermost level and an unbroken chain going inward. The reason for this restriction is that, if you could cast int** to const int**, you could subvert const-correctness without a cast:
Code:
const int ci = 0;
int *pi; // Valid - uninitialized pointer to int
int **ppi = π // Valid - ppi points at pi
const int **ppci = ppi; // Valid? ppci now points at pi
const int *pci = &ci; // Valid - pci is const and may point at the const int
*ppci = pci; // Valid - *ppci is "const int *", which you can assign to
// But uh, oh - pi points to ci now!
*pi = 100; // Modify ci???
// Since an unbroken chain is allowed, this is actually valid:
const int *const *pcpci = ppi;
*pcpci = π // Invalid. *pcpi is "const int *const" and cannot be assigned to.