static int flagload_com(STFLAGH sfh, const SFENTRY *tbl) { UINT device; COMMNG cm; int ret; _COMFLAG fhdr; COMFLAG flag; ret = statflag_read(sfh, &fhdr, sizeof(fhdr)); if (ret != STATFLAG_SUCCESS) { goto flcom_err1; } if (fhdr.size < sizeof(fhdr)) { goto flcom_err1; } flag = (COMFLAG)_MALLOC(fhdr.size, "com stat flag"); if (flag == NULL) { goto flcom_err1; } CopyMemory(flag, &fhdr, sizeof(fhdr)); ret |= statflag_read(sfh, flag + 1, fhdr.size - sizeof(fhdr)); if (ret != STATFLAG_SUCCESS) { goto flcom_err2; } device = (UINT)(INTPTR)tbl->arg1; switch(device) { case 0: commng_destroy(cm_mpu98); cm = commng_create(COMCREATE_MPU98II); cm_mpu98 = cm; break; case 1: commng_destroy(cm_rs232c); cm = commng_create(COMCREATE_SERIAL); cm_rs232c = cm; break; default: cm = NULL; break; } if (cm) { cm->msg(cm, COMMSG_SETFLAG, (INTPTR)flag); } flcom_err2: _MFREE(flag); flcom_err1: return(ret); }
void printif_reset(void) { commng_destroy(cm_prt); cm_prt = NULL; }