Преобразование конфигурационного файла в формате JSON в текстовый хедер.

    rsh. Хедер можно использовать как конфигурационный файл для lan10-12base
    @params -- параметры в формате JSON (dfparser.def_values.DEF_RSH_PARAMS)
    @return -- текстовый хедер

def serialise_to_rsh(params: dict) -> str:
    """Преобразование конфигурационного файла в формате JSON в текстовый хедер.

    rsh. Хедер можно использовать как конфигурационный файл для lan10-12base
    @params -- параметры в формате JSON (dfparser.def_values.DEF_RSH_PARAMS)
    @return -- текстовый хедер

    """
    out = "// Generated at %s\n\n" % (datetime.now())

    def add_val(field, value):
        """Add value to multiple line in rsh format."""
        if isinstance(value, bytes):
            value = value.decode("cp1251")
        val = ''.join('%s, ' % (v) for v in value) if isinstance(value, list) \
              else value
        if isinstance(val, str) and val.endswith(', '):
            val = val[:-2]
        return '%s -- %s\n' % (val, field)

    for param in params:
        if param == "channel":
            for i, channel in enumerate(params[param]):
                for ch_par in channel:
                    val = "%s_%s[%s]" % (param, ch_par, i)
                    if ch_par == "params":
                        val = "%ss_%s[%s]" % (param, ch_par, i)

                    out += add_val(val, channel[ch_par])
        elif param == "synchro_channel":
            for sync_ch_par in params[param]:
                if sync_ch_par == "type":
                    out += add_val(param, params[param][sync_ch_par])
                else:
                    out += add_val("%s_%s" % (param, sync_ch_par),
                                   params[param][sync_ch_par])
        else:
            out += add_val(param, params[param])

    return out