int parseBarcodeContext(barcodeContext context, barcodeOutput* output){
    unsigned int iter = 0, newLine = 0, 
	startStop = 0, bufferSize = 0, characterCounter = 0;
    char buffer[MAX_BARCODE_OUTPUT] = {0};
	
    if (output == NULL){
        return FAILURE;
    }
	
    bzero(output, sizeof(barcodeOutput));
	
    for (iter = 0 ; iter < context.noInputLines && startStop < 2; iter++){
        if (newLine == 1){
	    char ch = 0x00;
            if (output->size < MAX_BARCODE_OUTPUT && mapInputToCharacter(buffer, &ch, bufferSize) == SUCCESS){
	        output->line[output->size] = ch;
		output->size += 1;
	    }
	    newLine = 0;
	    bufferSize = 0;
	    bzero(buffer, sizeof(buffer));
        }

	if (isNewBlockSeparator(context.inputLines[iter]) == SUCCESS){
	    newLine = 1;
	}
	else if (isBufferStartEndTag(context.inputLines[iter]) == SUCCESS){
	    startStop++;
	}
	else if (isCharacterTag(context.inputLines[iter]) == SUCCESS){
	    if (isSkipTag(context.inputLines[iter]) == FAILURE){
		memcpy(buffer + bufferSize, context.inputLines[iter].line, INPUT_LINE_LENGTH);
		bufferSize += INPUT_LINE_LENGTH;
	    }
	}
    }
	
    if (startStop == 2){
        return SUCCESS;
    }
	
    return FAILURE;
}
Beispiel #2
0
int parseBarcodeContext(barcodeContext context, barcodeOutput* output){
	unsigned int 
		iter = 0, 
		newLine = 0, 
		startStop = 0, 
		bufferSize = 0,
		characterCounter = 0;
	char buffer[MAX_BARCODE_OUTPUT] = {0};
	
	if (output == NULL){
		return FAILURE;
	}
	
	bzero(output, sizeof(barcodeOutput));
	
	for (iter = 0 ; iter < context.noInputLines && startStop < 2; iter++){
        	if (newLine == 1){
			char ch = 0x00;
			if (output->size < MAX_BARCODE_OUTPUT && mapInputToCharacter(buffer, &ch, bufferSize) == SUCCESS){
				output->line[output->size] = ch;
				output->size += 1;

				// DEBUG
				//printf("CHARACTER=%c\n",ch);
			}
            		newLine = 0;
            		bufferSize = 0;
            		bzero(buffer, sizeof(buffer));
        	}

		if (isNewBlockSeparator(context.inputLines[iter]) == SUCCESS){
			newLine = 1;
			//printf("BLOCK \n");
		}
		else if (isBufferStartEndTag(context.inputLines[iter]) == SUCCESS){
			startStop++;
			//printf("START STOP TAG\n");
			//printf("startstop: %d \n", startStop);
		}
		else if (isCharacterTag(context.inputLines[iter]) == SUCCESS){
			//printf("CHARACTER \n");
			if (isSkipTag(context.inputLines[iter]) == FAILURE){
				memcpy(buffer + bufferSize, context.inputLines[iter].line, INPUT_LINE_LENGTH);
				bufferSize += INPUT_LINE_LENGTH;
				//printf("SKIP TAG\n");
				//printf("buffersize: %d\n", bufferSize);
			}
		}
		/*
		int iterBytes = 0;
		for (iterBytes = 0 ; iterBytes < INPUT_LINE_LENGTH ; iterBytes++){
			printf("0x%x", context.inputLines[iter].line[iterBytes]);
		}
		printf("\n");
		*/
	}
	
	if (startStop == 2){
		return SUCCESS;
	}
	
	return FAILURE;
}