import {stde} from '../stde'; import * as lle from '@ldamle/lle'; class Generator extends stde { constructor(freq: number, beginWith: lle.Types.signal.it = 0) { let beginWiths = lle.Types.signal.__getArrayIt(beginWith); super( '%', ['in'], ['out'], (a) => { return 'z'; } ); this.props['freq'] = freq; let tf = 1 / freq; this.props['unstableState'] = ( beginTime: number, endTime: number, state: lle.Types.signal.array ): lle.Types.signal.timeTable => { if (state == '1') { let curst = Math.floor(beginTime / tf) % 2 == 0 ? beginWiths : beginWiths === '0' ? '1' : '0'; let curtf = Math.floor(beginTime / tf) * tf + tf; let res: lle.Types.signal.timeTable = [ { time: beginTime, state: curst } ]; while (curtf < endTime) { curst = curst === '0' ? '1' : '0'; res.push({ time: curtf, state: curst }); curtf += tf; } return res; } return [ { time: beginTime, state: '0' } ]; }; } sout(){ return this.out('out'); } sin(connection: lle.Connection){ return this.in('in', connection); } } function generator(freq: number, beginWith: lle.Types.signal.it = 0) { return new Generator(freq, beginWith); } export {Generator, generator};