(function(exports){
	'use strict'
	
	var part="stm8l151g4";
	
	
	exports.burn = function(firmware, fw_rev, model) {
		
		ui.progress(0);

		var bin = fs.readBinary(firmware);

		fs.writeBinary("tmp/hm-cmt.bin", bin);
		
		// Запускаем программирование
		ui.progress(-1);
		if (! stm32.write("tmp/hm-cmt.bin")) return "Ошибка записи в чип";
		
		// Удаляем временный файл
		fs.remove("tmp/hm-cmt.bin");

		// Успешно
		return "";
	};

	exports.burn8 = function(firmware, fw_rev, model) {
		
		ui.progress(0);
		
		var ihex=require("scripts/IntelHex");
		var stm8flash=require("scripts/stm8");
		
		// Загружаем файл прошивки
		var fw=ihex.load(firmware, [ { address: 0x8000, size: 16384 } ]);
		
		// Копируем название
		var pos=0xBFF0-0x8000;
		for (var i=0; i<model.length; i++)
			fw[0].data[pos++]=model.charCodeAt(i);
		fw[0].data[pos++]=0;
		
		// Сохраняем прошивку в файл
		ihex.save("tmp/hm_cmt.hex", fw);
		
		// Разблокируем проц
		if (! stm8flash.unlock(part))
		{
			return "Ошибка при разблокировке !";
		}
		ui.progress(10);
		
		// Записываем flash
		if (! stm8flash.write(part, "flash", "tmp/hm_cmt.hex"))
		{
			return "Ошибка при прошивке Flash !";
		}
		ui.progress(70);
		
		// Проверяем flash
		if (! stm8flash.verify(part, "flash", "tmp/hm_cmt.hex"))
		{
			return "Ошибка при проверке Flash !";
		}
		ui.progress(100);
		
		// Удаляем временные файлы
		fs.remove("tmp/hm_cmt.hex");
		
		
		// Успешно
		return "";
	};
	
})(typeof exports === 'undefined' ? this['_hm_cmt_js']={} : exports);
