改122_トラックダンプ:
首先要跳转页面显示位置:
// TrackSpecification
pcx.PrintRaw("<tr>\n");
pcx.PrintRaw("<th>\n");
pcx.PutRawStr(CSP_GET_LIT(track));
pcx.PrintRaw("</th>\n");
cgi_CFmtCmnUnionString(pcx, NULL, NULL,NULL, NULL, cfpUnionParam, 0, NULL);
pcx.PrintRaw("</tr>\n");
构造体位置颠倒:
// TrackSpecification連結出力セルフォーマッタ用パラメータ構造体
cgi_CmnUnionParts radioCell[] = {
{NULL, cgi_DFmtSingleRadio, &radioParam[0], "_track_check", &isChecked[0]},
{NULL, cgi_DFmtFixedStr, info.exportInfo.trackSpecOptions.GetNameAt(0), NULL, NULL},
{NULL, cgi_DFmtFixedRawStr, " ", NULL, NULL},
{NULL, cgi_DFmtFixedStr, CSP_GET_LIT(CMisc::hexprefix), NULL, NULL},
{NULL, cgi_DFmtFixedRawStr, " ", NULL, NULL},
{NULL, cgi_DFmtInputStringWidth,&nameHintSlba, "_slba_value", &info.exportInfo.slba},
{NULL, cgi_DFmtFixedStr, CSP_GET_LIT(FTrackDump::slbaRange), NULL, NULL},
{NULL, cgi_DFmtFixedRawStr, "<br/>", NULL, NULL},
{NULL, cgi_DFmtSingleRadio, &radioParam[1], "_track_check", &isChecked[1]},
{NULL, cgi_DFmtFixedStr, info.exportInfo.trackSpecOptions.GetNameAt(1),NULL, NULL},
{NULL, cgi_DFmtFixedRawStr, " ", NULL, NULL},
{NULL, cgi_DFmtFixedStr, CSP_GET_LIT(CMisc::hexprefix), NULL, NULL},
{NULL, cgi_DFmtFixedRawStr, " ", NULL, NULL},
{NULL, cgi_DFmtInputString, &nameHintCchh, "_cchh_value", &info.exportInfo.cchh},
{NULL, cgi_DFmtFixedStr, CSP_GET_LIT(FTrackDump::cchhRange), NULL, NULL},
};
涉及到机型的选择:
// SLU No.の有効範囲を装置のモデルタイプによって設定
cgi_CellFmtPreSufParam sluNoRange;
switch(CGI_STORAGE_MODEL) {
caseCGI_MODEL_TYPE_DX90S3:
caseCGI_MODEL_TYPE_DX80S3:
// Spinnerの場合
sluNoRange = cfpPreSufSluNoN1;
break;
caseCGI_MODEL_TYPE_DX410S3:
// HumpbackType1の場合
sluNoRange = cfpPreSufSluNoN2;
break;
caseCGI_MODEL_TYPE_DX440S3:
// HumpbackType2の場合
sluNoRange = cfpPreSufSluNoN3;
break;
default:
sluNoRange = cfpPreSufSluNoN1;
break;
}
区域框内最大值设定:
//モデルの判定を行い、SLU No.の最大値を設定する
switch(CGI_STORAGE_MODEL){
caseCGI_MODEL_TYPE_DX90S3:
caseCGI_MODEL_TYPE_DX80S3:
//Spinnerの場合
vpl.AddIntParam("sluMax", CGI_TRACKDUMP_SLUN_MAX_N1);
break;
caseCGI_MODEL_TYPE_DX410S3:
//Humpback Type1の場合
vpl.AddIntParam("sluMax", CGI_TRACKDUMP_SLUN_MAX_N2);
break;
caseCGI_MODEL_TYPE_DX440S3:
//Humpback Type2の場合
vpl.AddIntParam("sluMax", CGI_TRACKDUMP_SLUN_MAX_N3);
break;
default:
CGI_ZERO_CLEAR(status);
CGI_SET_LOGICAL_ERROR_STATUS(CALL_ERROR, 0, 0, status);
eib.Append(status);
}
入力值鉴证的设定(在最大值和最小值范围内):
//モデルの判定を行う
switch(CGI_STORAGE_MODEL) {
caseCGI_MODEL_TYPE_DX90S3:
caseCGI_MODEL_TYPE_DX80S3:
//Spinnerの場合
// SLUNo.の入力が0x0000~x07FF の範囲内であるかどうかを検証する
sluNo = (int)strtoul(trckDmpData.sluNo.GetCStr(),0, radix_hex);
if(CSP_IntRangeChecker(sluNo, sluMin, sluMax) != CSP_OK) {
CGI_SET_ERROR_STATUS(CALL_ERROR_INVALID_ARG, CGI_CODE_KIND_VALIDATE,
MMI_VALID_CHECK_EXPORTTRACKDUMP, MMI_CETD_SLU_N1_RANGE_ERR, status);
eib.Append(status);
returnCSP_FAILED;
}
break;
caseCGI_MODEL_TYPE_DX410S3:
//Humpback Type1の場合
// SLUNo.の入力が0x0000~x1FFF の範囲内であるかどうかを検証する
sluNo = (int)strtoul(trckDmpData.sluNo.GetCStr(),0, radix_hex);
if(CSP_IntRangeChecker(sluNo, sluMin, sluMax) != CSP_OK) {
CGI_SET_ERROR_STATUS(CALL_ERROR_INVALID_ARG, CGI_CODE_KIND_VALIDATE,
MMI_VALID_CHECK_EXPORTTRACKDUMP,MMI_CETD_SLU_N2_RANGE_ERR, status);
eib.Append(status);
returnCSP_FAILED;
}
break;
caseCGI_MODEL_TYPE_DX440S3:
//Humpback Type2の場合
// SLUNo.の入力が0x0000~x7FFF の範囲内であるかどうかを検証する
sluNo = (int)strtoul(trckDmpData.sluNo.GetCStr(),0, radix_hex);
if(CSP_IntRangeChecker(sluNo, sluMin, sluMax) != CSP_OK) {
CGI_SET_ERROR_STATUS(CALL_ERROR_INVALID_ARG,CGI_CODE_KIND_VALIDATE,
MMI_VALID_CHECK_EXPORTTRACKDUMP, MMI_CETD_SLU_N3_RANGE_ERR, status);
eib.Append(status);
returnCSP_FAILED;
}
break;
default:
returnCSP_FAILED;
}