متن های منبع پروژه D-Modem منتشر شده است که مودم نرم افزاری برای سازماندهی انتقال اطلاعات از طریق شبکه های VoIP بر اساس پروتکل SIP را پیاده سازی می کند. D-Modem ایجاد یک کانال ارتباطی از طریق VoIP را ممکن میسازد، مشابه روشی که مودمهای تلفنی سنتی اجازه میدادند دادهها از طریق شبکههای تلفنی منتقل شوند. حوزههای کاربردی این پروژه شامل اتصال به شبکههای شمارهگیری موجود بدون استفاده از شبکه تلفن در انتهای دیگر، سازماندهی کانالهای ارتباطی مخفی و انجام تست امنیتی سیستمهایی است که فقط از طریق شمارهگیری قابل دسترسی هستند. کد پروژه به زبان C نوشته شده و تحت مجوز GPLv2 توزیع شده است.
پشتیبانی از پروتکل SIP با استفاده از کتابخانه ارتباطی PJSIP پیاده سازی می شود و برای اطمینان از عملکرد مودم، از اجزای درایور slmodem که در اصل برای مودم های نرم افزاری Smart Link عرضه شده بود، استفاده می شود. برخلاف مودمهای سنتی که از DSP برای پردازش سیگنال استفاده میکنند و مدولاسیون توسط میکروکنترلر انجام میشود، مودمهای نرم تنها دارای DSP هستند و سایر عملکردها در نرمافزار سمت راننده پیادهسازی میشوند.
پروژه D-Modem یک مودم کاملاً نرم افزاری را ارائه می دهد که در آن عملکرد DSP در نرم افزار پیاده سازی می شود. اجزای سخت افزاری مورد استفاده در مودم های نرم با یک پشته SIP جایگزین می شوند و به جای استفاده از DSP برای انتقال صدا از طریق خطوط آنالوگ، صدای D-Modem از طریق جریان های چندرسانه ای مانند RTP یا SRTP که در تماس های صوتی VoIP استفاده می شود، منتقل می شود.
مکانیسمهای پردازش سیگنالها و پشتیبانی از دستورات AT، و همچنین پیادهسازی پروتکلهای V.32bis (14.4kbps) و V.34 (33.6kbps) از درایور هسته آماده slmodemd گرفته شدهاند که با استفاده از آن توسعه یافته و کوتاه شده است. مشخصات پروژه را در نظر بگیرید. اکثر کدهای slmodemd منبع بسته هستند، هیچ کد منبع ارائه نشده است، از BLOB dsplib.o استفاده می کند. درایور اختصاصی به گونه ای طراحی شده است که به صورت مجزا به عنوان یک برنامه کاربردی و نه به عنوان یک ماژول هسته اجرا شود. برای تعامل با برنامه های خارجی، امکان تبادل داده از طریق سوکت های شبکه پیاده سازی شده است. برای مدیریت slmodemd افزونه d-modem آماده شده است که رابط نهایی را ارائه می کند و شامل ابزارهایی برای مدیریت استریم های صوتی و تماس های صوتی بر اساس پروتکل SIP می باشد.
در حین کار، یک دستگاه /dev/ttySL* ایجاد میشود که از طریق آن میتوانید با مودم تعامل داشته باشید، دستورات AT ارسال کنید و دادهها را تبادل کنید، مشابه نحوه کار با یک مودم معمولی (به عنوان مثال، میتوانید از pppd برای ایجاد IP استفاده کنید. کانال). اتصال به یک حساب SIP با استفاده از متغیر محیطی SIP_LOGIN انجام می شود. این پروژه همچنین می تواند برای اتصال به شبکه های شماره گیری موجود، در شرایطی که مودم کلاسیک وجود ندارد، استفاده شود (تماس های SIP را می توان به یک شبکه تلفن معمولی هدایت کرد).
منبع: opennet.ru