def _send_2d_code_data(self, fn, cn, data, m=b'<STR_LIT>'):
if len(m) > <NUM_LIT:1> or len(cn) != <NUM_LIT:1> or len(fn) != <NUM_LIT:1>:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>header = self._int_low_high(len(data) + len(m) + <NUM_LIT:2>, <NUM_LIT:2>)<EOL>self._raw(GS + b'<STR_LIT>' + header + cn + fn + m + data)<EOL>
Wrapper for GS ( k, to calculate and send correct data length.

        :param fn: Function to use.
        :param cn: Output code type. Affects available data.
        :param data: Data to send.
        :param m: Modifier/variant for function. Often '0' where used.